<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://oldwiki.devbox.themanaworld.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=O11c</id>
	<title>The Mana World - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://oldwiki.devbox.themanaworld.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=O11c"/>
	<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/wiki/Special:Contributions/O11c"/>
	<updated>2026-05-06T04:47:57Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Template:I18n&amp;diff=32495</id>
		<title>Template:I18n</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Template:I18n&amp;diff=32495"/>
		<updated>2015-02-04T20:35:00Z</updated>

		<summary type="html">&lt;p&gt;O11c: typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This template contains translation links for user articles. This template is only for user articles. Development pages should not receive this.&lt;br /&gt;
&lt;br /&gt;
Only use in the main namespace for now.&lt;br /&gt;
{{I18n}}&lt;br /&gt;
&amp;lt;!--ONLY SERVER ADMINS SHOULD EDIT THIS AS NAMESPACES NEED TO BE ADDED IN THE PHP CODE. YOU HAVE BEEN WARNED! --&amp;gt;&lt;br /&gt;
&amp;lt;!--Seriously. This was messed up in the past. Don&#039;t edit this without ssh access. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;toc noprint&amp;quot; style=&amp;quot;border: 1px solid #da72ff; color: #000; background-color: #eebeff; text-align: center; margin-bottom: 1em&amp;quot;&amp;gt;&lt;br /&gt;
[[Ar:{{PAGENAMEE}}|العربية]]&lt;br /&gt;
- [[Cz:{{PAGENAMEE}}|Česky]]&lt;br /&gt;
- [[De:{{PAGENAMEE}}|Deutsch]]&lt;br /&gt;
- [[{{PAGENAMEE}}|English]]&lt;br /&gt;
- [[Es:{{PAGENAMEE}}|Español]]&lt;br /&gt;
- [[Fa:{{PAGENAMEE}}|پارسی]]&lt;br /&gt;
- [[Fr:{{PAGENAMEE}}|Français]]&lt;br /&gt;
- [[Id:{{PAGENAMEE}}|Bahasa Indonesia]]&lt;br /&gt;
- [[It:{{PAGENAMEE}}|Italiano]]&lt;br /&gt;
- [[Pl:{{PAGENAMEE}}|Polski]]&lt;br /&gt;
- [[Pt:{{PAGENAMEE}}|Português]]&lt;br /&gt;
- [[Ru:{{PAGENAMEE}}|Русский]]&lt;br /&gt;
- [[Sq:{{PAGENAMEE}}|Shqip]]&lt;br /&gt;
- [[Sv:{{PAGENAMEE}}|Svenska]]&lt;br /&gt;
- [[Tr:{{PAGENAMEE}}|Türkçe]]&lt;br /&gt;
- [[Zh:{{PAGENAMEE}}|繁體中文]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Template:I18n&amp;diff=32494</id>
		<title>Template:I18n</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Template:I18n&amp;diff=32494"/>
		<updated>2015-02-04T20:34:30Z</updated>

		<summary type="html">&lt;p&gt;O11c: Add traditional chinese&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This template contains translation links for user articles. This template is only for user articles. Development pages should not receive this.&lt;br /&gt;
&lt;br /&gt;
Only use in the main namespace for now.&lt;br /&gt;
{{I18n}}&lt;br /&gt;
&amp;lt;!--ONLY SERVER ADMINS SHOULD EDIT THIS AS NAMESPACES NEED TO BE ADDED IN THE PHP CODE. YOU HAVE BEEN WARNED! --&amp;gt;&lt;br /&gt;
&amp;lt;!--Seriously. This was messed up in the past. Don&#039;t edit this without ssh access. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;toc noprint&amp;quot; style=&amp;quot;border: 1px solid #da72ff; color: #000; background-color: #eebeff; text-align: center; margin-bottom: 1em&amp;quot;&amp;gt;&lt;br /&gt;
[[Ar:{{PAGENAMEE}}|العربية]]&lt;br /&gt;
- [[Cz:{{PAGENAMEE}}|Česky]]&lt;br /&gt;
- [[De:{{PAGENAMEE}}|Deutsch]]&lt;br /&gt;
- [[{{PAGENAMEE}}|English]]&lt;br /&gt;
- [[Es:{{PAGENAMEE}}|Español]]&lt;br /&gt;
- [[Fa:{{PAGENAMEE}}|پارسی]]&lt;br /&gt;
- [[Fr:{{PAGENAMEE}}|Français]]&lt;br /&gt;
- [[Id:{{PAGENAMEE}}|Bahasa Indonesia]]&lt;br /&gt;
- [[It:{{PAGENAMEE}}|Italiano]]&lt;br /&gt;
- [[Pl:{{PAGENAMEE}}|Polski]]&lt;br /&gt;
- [[Pt:{{PAGENAMEE}}|Português]]&lt;br /&gt;
- [[Ru:{{PAGENAMEE}}|Русский]]&lt;br /&gt;
- [[Sq:{{PAGENAMEE}}|Shqip]]&lt;br /&gt;
- [[Sv:{{PAGENAMEE}}|Svenska]]&lt;br /&gt;
- [[Tr:{{PAGENAMEE}}|Türkçe]]&lt;br /&gt;
- [[Zh:{{PAGENAME}}|繁體中文]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Development:Joining_the_project&amp;diff=30981</id>
		<title>Development:Joining the project</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Development:Joining_the_project&amp;diff=30981"/>
		<updated>2014-07-07T03:45:54Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* Technical aspects */ blurb TMWA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;So you want to help this project, but you have little or no idea how to get into it? &#039;&#039;&#039;The Mana World development team is &#039;&#039;not&#039;&#039; a closed circle&#039;&#039;&#039; like many other projects. You don&#039;t need to apply to anyone or ask for &amp;quot;being taken into the team&amp;quot;. You don&#039;t have to ask for permission to work on something or wait for someone to assign a task to you. A team member is basically anyone who volunteers to do something for the game.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; Besides reading this page the best way to start is asking for further information and assistance in our [https://webchat.freenode.net/?channels=#themanaworld-dev IRC development channel] or on the [https://forums.themanaworld.org/ forums].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If you know [[Dev:Working With Git|how to use Git]] you will even be more effective.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Technical aspects==&lt;br /&gt;
The technical aspects of development of TMW include tweaking our custom server (tmwAthena). The server is done in C++ and scripts are done in the tmwAthena scripting language. Notably tmwAthena is an SVN snapshot from [http://eathena.ws/ eAthena] (a [http://en.wikipedia.org/wiki/Ragnarok_Online Ragnarok Online] game server emulator software) in early 2004. We&#039;ve extensively hacked it and cleaned it over the years (it was at the moment of taking the snapshot in transition from the basis of an old hacky [http://en.wikipedia.org/wiki/MUD MUD] server to the current eAthena codebase). The technical aspects of the TMW project also include packaging data updates for the client.&lt;br /&gt;
&lt;br /&gt;
===ManaPlus Client===&lt;br /&gt;
Originally just a fork of the official Mana client, ManaPlus got blessed when Mana stopped being updated and ran behind on features.&lt;br /&gt;
&lt;br /&gt;
[http://manaplus.evolonline.org/ Site and downloads], [http://bugs.evolonline.org bug tracker].&lt;br /&gt;
&lt;br /&gt;
===TMWA server===&lt;br /&gt;
&amp;lt;!-- This information is heavily based on the README in tmwa.git, it would probably be a good idea to edit that too. --&amp;gt;&lt;br /&gt;
The Mana World Athena is an MMORPG server that forked from eAthena, a Ragnarok Online clone, in early 2004. The major advantage of TMWA compared to RO clones is that it does not rely on a proprietary client that can&#039;t be changed, but nowadays we&#039;re quite distant from the RO community.&lt;br /&gt;
&lt;br /&gt;
TMWA has been maintained by o11c (Ben Longbons) since early 2011 or so.&lt;br /&gt;
Before that, it never really had a proper maintainer, since everyone&lt;br /&gt;
thought that ManaServ was going to be the thing. But it won&#039;t ever be, so no more random hacks in TMWA, have a design plz kthxbye.&lt;br /&gt;
&lt;br /&gt;
TMWA has a bugtracker: https://github.com/themanaworld/tmwa/issues&lt;br /&gt;
But it&#039;s probably worth getting on IRC first:&lt;br /&gt;
irc://chat.freenode.net/tmwa&lt;br /&gt;
https://webchat.freenode.net/?channels=#tmwa&lt;br /&gt;
&lt;br /&gt;
Note that this channel is *only* for technical discussion of TMWA (and&lt;br /&gt;
attoconf), not general chat or TMW content development.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Mana World (Athena) server originated as a snapshot of [http://eathena.ws eAthena]. It has since been extensively kludged, purged, optimized, and strictened, to the point that it will usually bitch at you if your scripts or config are wrong instead of silently doing the wrong thing. It it also well on the way to being a well-behaved package that can be installed with the usual package management tools (for all of you who don&#039;t know what package management tools are, your OS sucks and you deserve what you get), but we&#039;d need to ship some sort of server data snapshots for that ...&lt;br /&gt;
&lt;br /&gt;
There are no specific instructions to set up TMWA alone, the only instructions are in [[How to Develop]]. Particularly, building from a tarball will not work, use &#039;make dist&#039; instead.&lt;br /&gt;
&lt;br /&gt;
==Content==&lt;br /&gt;
Content means: new monsters, new equipment, new maps, new NPCs, new quests, new anything into the game.&lt;br /&gt;
Content does not mean: GFX, SFX.&lt;br /&gt;
&lt;br /&gt;
Before anything can get into the game, it should be designed. After that it should be implemented server-sided. Then GFX and potentially also SFX can be requested for it and it can go into the game once they&#039;re done. Currently visioning ideas is a collective process anyone can take part in and the people doing scripting are cherry-picking whatever ideas they want to get into the game. Scripting stuff is also a free for all process. Once there is a good idea to expand the world, in general new maps can be requested. Reading the forums thoroughly and asking publicly usually gets you answers rather well.&lt;br /&gt;
&lt;br /&gt;
==Graphics==&lt;br /&gt;
Graphics development could currently (June 2013) use a few pixel artists going about and retouching old mistakes in tilesets and sprite sets. Also if the content development crowd picks up and starts to provide concepts which would require new GFX work to be done, then there is going to be a demand for new equipment work, tilesets and sprite sets. Please remember to pay attention to our [[guidelines]].&lt;br /&gt;
&lt;br /&gt;
Also do hunt for unfulfilled REQ topics on the forums if you&#039;re looking for something to do. Newbie pixel artists or people doing their first pixel art piece ever are also very welcome. The community can be pretty harsh at times, but there are also people around who actually do know what they&#039;re talking about. It is up to you to distinguish between these two.&lt;br /&gt;
&lt;br /&gt;
==SFX / Music==&lt;br /&gt;
The SFX and music development scheme for TMW is currently not really all that active. New sounds and music are always appreciated.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Archive:TmwAthena_Packets&amp;diff=30646</id>
		<title>Archive:TmwAthena Packets</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Archive:TmwAthena_Packets&amp;diff=30646"/>
		<updated>2014-05-26T21:06:37Z</updated>

		<summary type="html">&lt;p&gt;O11c: Link to the script&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Note: you can get a more up-to-date, but less detail, description in [https://github.com/themanaworld/tmwa/blob/master/tools/protocol.py|the repository&#039;s protocol generator script]&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
=== Packet Alignment ===&lt;br /&gt;
The alignment of the data within the packet payload can cause additional overhead if the data is not properly aligned to word boundaries. For example, in a 32-bit application, a word is a sequence of two eight-bit bytes. Any data that occupies 2 bytes or larger on this platform should always start at a (2 * n) offset (0, 2, 4, etc). Any data that is less than 2 bytes can start at any offset, so long as it does not span multiple words. A 16-bit integer could start at offset 0, 2, or 4, but not at 1, 3, or 5 because the first byte would be in one word and the second byte would be in the next word. Single byte words will always fall on word boundaries. The last piece of data should end on a word boundary as well. If any of the data are double words in size, the packet must also be a multiple of the double word size and any double word sized data must fall on a double word boundary.&lt;br /&gt;
&lt;br /&gt;
To leverage the maximum efficiency, padding can be added between pieces of data to force subsequent data to be aligned to word boundaries. For example, if a packet contains a word, and a half word, either the data should be ordered as word, half word, and a half word of padding that will be discarded by the recipient. The same data, ordered as a half word, word, a half word of padding would take up the same amount of space, but the word would span two different words of the packet and cause inefficient processing of that packet.&lt;br /&gt;
&lt;br /&gt;
The following colors are used to indicate the alignment of the packets:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Color Meaning &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Examples &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: green;&amp;quot;&amp;gt;The packet contents and total size are properly aligned.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2; 2 2; 2 2 4; 2 2 2*N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: chartreuse;&amp;quot;&amp;gt;The packet contents are aligned, but they contain a variable-length element that may cause the whole packet to be improperly aligned.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 2 1*N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: yellow;&amp;quot;&amp;gt;The packet contents are properly aligned, but do not end on a word boundary.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 1 ; 2 2 4 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: orange;&amp;quot;&amp;gt;The packet contents are not properly aligned on word boundaries, but could be with skew padding.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 4 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: orangered;&amp;quot;&amp;gt;The packet contents are not properly aligned if the number of varying elements is at least 2.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 2 (2 1)*N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: red;&amp;quot;&amp;gt;The packet contents are not properly aligned on word boundaries, even with skew padding.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 4 2 4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Client Packets ==&lt;br /&gt;
This is a new table that steal information from individual packet pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Client #define&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0061|mode=row}}&lt;br /&gt;
{{Net:0x0062|mode=row}}&lt;br /&gt;
{{Net:0x0063|mode=row}}&lt;br /&gt;
{{Net:0x0064|mode=row}}&lt;br /&gt;
{{Net:0x0065|mode=row}}&lt;br /&gt;
{{Net:0x0066|mode=row}}&lt;br /&gt;
{{Net:0x0067|mode=row}}&lt;br /&gt;
{{Net:0x0068|mode=row}}&lt;br /&gt;
{{Net:0x0069|mode=row}}&lt;br /&gt;
{{Net:0x006A|mode=row}}&lt;br /&gt;
{{Net:0x006B|mode=row}}&lt;br /&gt;
{{Net:0x006C|mode=row}}&lt;br /&gt;
{{Net:0x006D|mode=row}}&lt;br /&gt;
{{Net:0x006E|mode=row}}&lt;br /&gt;
{{Net:0x006F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0070|mode=row}}&lt;br /&gt;
{{Net:0x0071|mode=row}}&lt;br /&gt;
{{Net:0x0072|mode=row}}&lt;br /&gt;
{{Net:0x0073|mode=row}}&lt;br /&gt;
{{Net:0x0078|mode=row}}&lt;br /&gt;
{{Net:0x007B|mode=row}}&lt;br /&gt;
{{Net:0x007C|mode=row}}&lt;br /&gt;
{{Net:0x007D|mode=row}}&lt;br /&gt;
{{Net:0x007E|mode=row}}&lt;br /&gt;
{{Net:0x007F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0080|mode=row}}&lt;br /&gt;
{{Net:0x0081|mode=row}}&lt;br /&gt;
{{Net:0x0085|mode=row}}&lt;br /&gt;
{{Net:0x0086|mode=row}}&lt;br /&gt;
{{Net:0x0087|mode=row}}&lt;br /&gt;
{{Net:0x0088|mode=row}}&lt;br /&gt;
{{Net:0x0089|mode=row}}&lt;br /&gt;
{{Net:0x008A|mode=row}}&lt;br /&gt;
{{Net:0x008C|mode=row}}&lt;br /&gt;
{{Net:0x008D|mode=row}}&lt;br /&gt;
{{Net:0x008E|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0090|mode=row}}&lt;br /&gt;
{{Net:0x0091|mode=row}}&lt;br /&gt;
{{Net:0x0092|mode=row}}&lt;br /&gt;
{{Net:0x0094|mode=row}}&lt;br /&gt;
{{Net:0x0095|mode=row}}&lt;br /&gt;
{{Net:0x0096|mode=row}}&lt;br /&gt;
{{Net:0x0097|mode=row}}&lt;br /&gt;
{{Net:0x0098|mode=row}}&lt;br /&gt;
{{Net:0x0099|mode=row}}&lt;br /&gt;
{{Net:0x009A|mode=row}}&lt;br /&gt;
{{Net:0x009B|mode=row}}&lt;br /&gt;
{{Net:0x009C|mode=row}}&lt;br /&gt;
{{Net:0x009D|mode=row}}&lt;br /&gt;
{{Net:0x009E|mode=row}}&lt;br /&gt;
{{Net:0x009F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00A0|mode=row}}&lt;br /&gt;
{{Net:0x00A1|mode=row}}&lt;br /&gt;
{{Net:0x00A2|mode=row}}&lt;br /&gt;
{{Net:0x00A4|mode=row}}&lt;br /&gt;
{{Net:0x00A6|mode=row}}&lt;br /&gt;
{{Net:0x00A7|mode=row}}&lt;br /&gt;
{{Net:0x00A8|mode=row}}&lt;br /&gt;
{{Net:0x00A9|mode=row}}&lt;br /&gt;
{{Net:0x00AA|mode=row}}&lt;br /&gt;
{{Net:0x00AB|mode=row}}&lt;br /&gt;
{{Net:0x00AC|mode=row}}&lt;br /&gt;
{{Net:0x00AF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00B0|mode=row}}&lt;br /&gt;
{{Net:0x00B1|mode=row}}&lt;br /&gt;
{{Net:0x00B2|mode=row}}&lt;br /&gt;
{{Net:0x00B3|mode=row}}&lt;br /&gt;
{{Net:0x00B4|mode=row}}&lt;br /&gt;
{{Net:0x00B5|mode=row}}&lt;br /&gt;
{{Net:0x00B6|mode=row}}&lt;br /&gt;
{{Net:0x00B7|mode=row}}&lt;br /&gt;
{{Net:0x00B8|mode=row}}&lt;br /&gt;
{{Net:0x00B9|mode=row}}&lt;br /&gt;
{{Net:0x00BB|mode=row}}&lt;br /&gt;
{{Net:0x00BC|mode=row}}&lt;br /&gt;
{{Net:0x00BD|mode=row}}&lt;br /&gt;
{{Net:0x00BE|mode=row}}&lt;br /&gt;
{{Net:0x00BF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00C0|mode=row}}&lt;br /&gt;
{{Net:0x00C1|mode=row}}&lt;br /&gt;
{{Net:0x00C2|mode=row}}&lt;br /&gt;
{{Net:0x00C3|mode=row}}&lt;br /&gt;
{{Net:0x00C4|mode=row}}&lt;br /&gt;
{{Net:0x00C5|mode=row}}&lt;br /&gt;
{{Net:0x00C6|mode=row}}&lt;br /&gt;
{{Net:0x00C7|mode=row}}&lt;br /&gt;
{{Net:0x00C8|mode=row}}&lt;br /&gt;
{{Net:0x00C9|mode=row}}&lt;br /&gt;
{{Net:0x00CA|mode=row}}&lt;br /&gt;
{{Net:0x00CB|mode=row}}&lt;br /&gt;
{{Net:0x00CC|mode=row}}&lt;br /&gt;
{{Net:0x00CD|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00E4|mode=row}}&lt;br /&gt;
{{Net:0x00E5|mode=row}}&lt;br /&gt;
{{Net:0x00E6|mode=row}}&lt;br /&gt;
{{Net:0x00E7|mode=row}}&lt;br /&gt;
{{Net:0x00E8|mode=row}}&lt;br /&gt;
{{Net:0x00E9|mode=row}}&lt;br /&gt;
{{Net:0x00EB|mode=row}}&lt;br /&gt;
{{Net:0x00EC|mode=row}}&lt;br /&gt;
{{Net:0x00ED|mode=row}}&lt;br /&gt;
{{Net:0x00EE|mode=row}}&lt;br /&gt;
{{Net:0x00EF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00F0|mode=row}}&lt;br /&gt;
{{Net:0x00F2|mode=row}}&lt;br /&gt;
{{Net:0x00F3|mode=row}}&lt;br /&gt;
{{Net:0x00F4|mode=row}}&lt;br /&gt;
{{Net:0x00F5|mode=row}}&lt;br /&gt;
{{Net:0x00F6|mode=row}}&lt;br /&gt;
{{Net:0x00F7|mode=row}}&lt;br /&gt;
{{Net:0x00F8|mode=row}}&lt;br /&gt;
{{Net:0x00F9|mode=row}}&lt;br /&gt;
{{Net:0x00FA|mode=row}}&lt;br /&gt;
{{Net:0x00FB|mode=row}}&lt;br /&gt;
{{Net:0x00FC|mode=row}}&lt;br /&gt;
{{Net:0x00FD|mode=row}}&lt;br /&gt;
{{Net:0x00FE|mode=row}}&lt;br /&gt;
{{Net:0x00FF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0100|mode=row}}&lt;br /&gt;
{{Net:0x0101|mode=row}}&lt;br /&gt;
{{Net:0x0102|mode=row}}&lt;br /&gt;
{{Net:0x0103|mode=row}}&lt;br /&gt;
{{Net:0x0104|mode=row}}&lt;br /&gt;
{{Net:0x0105|mode=row}}&lt;br /&gt;
{{Net:0x0106|mode=row}}&lt;br /&gt;
{{Net:0x0107|mode=row}}&lt;br /&gt;
{{Net:0x0108|mode=row}}&lt;br /&gt;
{{Net:0x0109|mode=row}}&lt;br /&gt;
{{Net:0x010C|mode=row}}&lt;br /&gt;
{{Net:0x010E|mode=row}}&lt;br /&gt;
{{Net:0x010F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0110|mode=row}}&lt;br /&gt;
{{Net:0x0112|mode=row}}&lt;br /&gt;
{{Net:0x0113|mode=row}}&lt;br /&gt;
{{Net:0x0116|mode=row}}&lt;br /&gt;
{{Net:0x0119|mode=row}}&lt;br /&gt;
{{Net:0x011B|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0139|mode=row}}&lt;br /&gt;
{{Net:0x013A|mode=row}}&lt;br /&gt;
{{Net:0x013B|mode=row}}&lt;br /&gt;
{{Net:0x013C|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0141|mode=row}}&lt;br /&gt;
{{Net:0x0142|mode=row}}&lt;br /&gt;
{{Net:0x0143|mode=row}}&lt;br /&gt;
{{Net:0x0146|mode=row}}&lt;br /&gt;
{{Net:0x0148|mode=row}}&lt;br /&gt;
{{Net:0x0149|mode=row}}&lt;br /&gt;
{{Net:0x014C|mode=row}}&lt;br /&gt;
{{Net:0x014D|mode=row}}&lt;br /&gt;
{{Net:0x014E|mode=row}}&lt;br /&gt;
{{Net:0x014F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0151|mode=row}}&lt;br /&gt;
{{Net:0x0152|mode=row}}&lt;br /&gt;
{{Net:0x0153|mode=row}}&lt;br /&gt;
{{Net:0x0154|mode=row}}&lt;br /&gt;
{{Net:0x0155|mode=row}}&lt;br /&gt;
{{Net:0x0156|mode=row}}&lt;br /&gt;
{{Net:0x0159|mode=row}}&lt;br /&gt;
{{Net:0x015A|mode=row}}&lt;br /&gt;
{{Net:0x015B|mode=row}}&lt;br /&gt;
{{Net:0x015C|mode=row}}&lt;br /&gt;
{{Net:0x015D|mode=row}}&lt;br /&gt;
{{Net:0x015E|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0160|mode=row}}&lt;br /&gt;
{{Net:0x0161|mode=row}}&lt;br /&gt;
{{Net:0x0162|mode=row}}&lt;br /&gt;
{{Net:0x0163|mode=row}}&lt;br /&gt;
{{Net:0x0165|mode=row}}&lt;br /&gt;
{{Net:0x0166|mode=row}}&lt;br /&gt;
{{Net:0x0167|mode=row}}&lt;br /&gt;
{{Net:0x0168|mode=row}}&lt;br /&gt;
{{Net:0x0169|mode=row}}&lt;br /&gt;
{{Net:0x016A|mode=row}}&lt;br /&gt;
{{Net:0x016B|mode=row}}&lt;br /&gt;
{{Net:0x016C|mode=row}}&lt;br /&gt;
{{Net:0x016D|mode=row}}&lt;br /&gt;
{{Net:0x016E|mode=row}}&lt;br /&gt;
{{Net:0x016F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0170|mode=row}}&lt;br /&gt;
{{Net:0x0171|mode=row}}&lt;br /&gt;
{{Net:0x0172|mode=row}}&lt;br /&gt;
{{Net:0x0173|mode=row}}&lt;br /&gt;
{{Net:0x0174|mode=row}}&lt;br /&gt;
{{Net:0x017E|mode=row}}&lt;br /&gt;
{{Net:0x017F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0180|mode=row}}&lt;br /&gt;
{{Net:0x0181|mode=row}}&lt;br /&gt;
{{Net:0x0183|mode=row}}&lt;br /&gt;
{{Net:0x0184|mode=row}}&lt;br /&gt;
{{Net:0x018A|mode=row}}&lt;br /&gt;
{{Net:0x018B|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0190|mode=row}}&lt;br /&gt;
{{Net:0x0195|mode=row}}&lt;br /&gt;
{{Net:0x0196|mode=row}}&lt;br /&gt;
{{Net:0x019B|mode=row}}&lt;br /&gt;
{{Net:0x019C|mode=row}}&lt;br /&gt;
{{Net:0x019D|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01B1|mode=row}}&lt;br /&gt;
{{Net:0x01B6|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01C8|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01D4|mode=row}}&lt;br /&gt;
{{Net:0x01D5|mode=row}}&lt;br /&gt;
{{Net:0x01D7|mode=row}}&lt;br /&gt;
{{Net:0x01D8|mode=row}}&lt;br /&gt;
{{Net:0x01D9|mode=row}}&lt;br /&gt;
{{Net:0x01DA|mode=row}}&lt;br /&gt;
{{Net:0x01DE|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01EE|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01F0|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x020C|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Internal packets not documented here. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x7530|mode=row}}&lt;br /&gt;
{{Net:0x7531|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ManaPlus Packets ==&lt;br /&gt;
These packets were originally added by ManaPlus to support Evol.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Client #define&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0212|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Used packets ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!packet !!      len     !!      client define                                   !!      sent location(s)                                                                                                                        !!      parse location&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0061 ||      50      ||      CMSG_CHAR_PASSWORD_CHANGE                       ||      src/net/tmwa/loginhandler.cpp:264                                                                                                       ||      src/char/char.c:3036&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0062 ||      3       ||      SMSG_CHAR_PASSWORD_RESPONSE                     ||      src/char/char.c:2368                                                                                                                    ||      src/net/tmwa/loginhandler.cpp:71&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0063 ||      -1      ||      SMSG_UPDATE_HOST                                ||      src/login/login.c:3732                                                                                                                  ||      src/net/tmwa/loginhandler.cpp:103&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0064 ||      55      ||      (hard-coded)                                    ||      src/net/tmwa/loginhandler.cpp:298                                                                                                       ||      src/login/login.c:3644&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0065 ||      17      ||      CMSG_CHAR_SERVER_CONNECT                        ||      src/net/tmwa/charserverhandler.cpp:340                                                                                                  ||      src/char/char.c:3049&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0066 ||      3       ||      CMSG_CHAR_SELECT                                ||      src/net/tmwa/charserverhandler.cpp:283&amp;lt;br&amp;gt;src/char/char.c:3424                                                                          ||      src/char/char.c:3142&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0067 ||      37      ||      CMSG_CHAR_CREATE                                ||      src/net/tmwa/charserverhandler.cpp:291                                                                                                  ||      src/char/char.c:3312&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0068 ||      46      ||      CMSG_CHAR_DELETE                                ||      src/net/tmwa/charserverhandler.cpp:306                                                                                                  ||      src/char/char.c:3387&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0069 ||      -1      ||      SMSG_LOGIN_DATA                                 ||      src/login/login.c:3795                                                                                                                  ||      src/net/tmwa/loginhandler.cpp:114&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006A ||      23      ||      SMSG_LOGIN_ERROR                                ||      src/login/login.c:3683&amp;lt;br&amp;gt;src/login/login.c:3833                                                                                        ||      src/net/tmwa/loginhandler.cpp:149&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006B ||      -1      ||      SMSG_CHAR_LOGIN                                 ||      src/char/char.c:1660                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:101&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006C ||      3       ||      SMSG_CHAR_LOGIN_ERROR                           ||      src/char/char.c:1948&amp;lt;br&amp;gt;src/char/char.c:1970&amp;lt;br&amp;gt;src/char/char.c:3110&amp;lt;br&amp;gt;src/char/char.c:3133                                            ||      src/net/tmwa/charserverhandler.cpp:75&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006D ||      108     ||      SMSG_CHAR_CREATE_SUCCEEDED                      ||      src/char/char.c:3325                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:118&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006E ||      3       ||      SMSG_CHAR_CREATE_FAILED                         ||      src/char/char.c:3318                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:137&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006F ||      2       ||      SMSG_CHAR_DELETE_SUCCEEDED                      ||      src/char/char.c:3496                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:144&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0070 ||      3       ||      SMSG_CHAR_DELETE_FAILED                         ||      src/char/char.c:3156&amp;lt;br&amp;gt;src/char/char.c:3401&amp;lt;br&amp;gt;src/char/char.c:3432&amp;lt;br&amp;gt;src/char/char.c:3504                                            ||      src/net/tmwa/charserverhandler.cpp:153&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0071 ||      28      ||      SMSG_CHAR_MAP_INFO                              ||      src/char/char.c:3272                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:158&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0072 ||      19      ||      CMSG_MAP_SERVER_CONNECT                         ||      src/net/tmwa/gamehandler.cpp:124                                                                                                        ||      src/map/clif.c:6729&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0073 ||      11      ||      SMSG_MAP_LOGIN_SUCCESS                          ||      src/map/clif.c:609                                                                                                                      ||      src/net/tmwa/gamehandler.cpp:67&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0078 ||      54      ||      SMSG_BEING_VISIBLE                              ||      src/map/clif.c:823&amp;lt;br&amp;gt;src/map/clif.c:1060&amp;lt;br&amp;gt;src/map/clif.c:1185&amp;lt;br&amp;gt;src/map/clif.c:1382                                                 ||      src/net/tmwa/beinghandler.cpp:121&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007B ||      60      ||      SMSG_BEING_MOVE                                 ||      src/map/clif.c:912&amp;lt;br&amp;gt;src/map/clif.c:1122                                                                                               ||      src/net/tmwa/beinghandler.cpp:122&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007C ||      41      ||      SMSG_BEING_SPAWN                                ||      src/map/clif.c:1279&amp;lt;br&amp;gt;src/map/clif.c:1347&amp;lt;br&amp;gt;src/map/clif.c:1372&amp;lt;br&amp;gt;src/map/clif.c:1414                                                ||      src/net/tmwa/beinghandler.cpp:239&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007D ||      2       ||      CMSG_MAP_LOADED                                 ||      src/net/tmwa/gamehandler.cpp:152                                                                                                        ||      src/map/clif.c:6786&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007E ||      6       ||      CMSG_CLIENT_PING                                ||      src/net/tmwa/gamehandler.cpp:166                                                                                                        ||      src/map/clif.c:6942&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007F ||      6       ||      SMSG_SERVER_PING                                ||      src/map/clif.c:1445                                                                                                                     ||      src/net/tmwa/gamehandler.cpp:81&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0080 ||      7       ||      SMSG_BEING_REMOVE                               ||      src/map/clif.c:65&amp;lt;br&amp;gt;src/map/clif.c:791                                                                                                 ||      src/net/tmwa/beinghandler.cpp:273&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0081 ||      3       ||      SMSG_CONNECTION_PROBLEM                         ||      src/login/login.c:3700&amp;lt;br&amp;gt;src/login/login.c:3824&amp;lt;br&amp;gt;src/char/char.c:3264&amp;lt;br&amp;gt;src/map/clif.c:628                                          ||      src/net/tmwa/generalhandler.cpp:122&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0085 ||      5       ||      CMSG_PLAYER_CHANGE_DEST                         ||      src/net/tmwa/playerhandler.cpp:621                                                                                                      ||      src/map/clif.c:6955&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0086 ||      16      ||      SMSG_BEING_MOVE2                                ||                                                                                                                                              ||      src/net/tmwa/beinghandler.cpp:246&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0087 ||      12      ||      SMSG_WALK_RESPONSE                              ||      src/map/clif.c:1463                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:177&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0088 ||      10      ||      SMSG_PLAYER_STOP                                ||      src/map/clif.c:1590                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:630&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0089 ||      7       ||      CMSG_PLAYER_CHANGE_ACT&amp;lt;br&amp;gt;CMSG_PLAYER_ATTACK    ||      src/net/tmwa/playerhandler.cpp:635&amp;lt;br&amp;gt;src/net/tmwa/playerhandler.cpp:566                                                                ||      src/map/clif.c:7341&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008A ||      29      ||      SMSG_BEING_ACTION                               ||      src/map/clif.c:3761&amp;lt;br&amp;gt;src/map/clif.c:6563                                                                                              ||      src/net/tmwa/beinghandler.cpp:328&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008C ||      -1      ||      CMSG_CHAT_MESSAGE                               ||      src/net/tmwa/chathandler.cpp:199                                                                                                        ||      src/map/clif.c:7173&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008D ||      -1      ||      SMSG_BEING_CHAT                                 ||      src/map/clif.c:7209&amp;lt;br&amp;gt;src/map/clif.c:7236                                                                                              ||      src/net/tmwa/chathandler.cpp:113&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008E ||      -1      ||      SMSG_PLAYER_CHAT                                ||      src/map/clif.c:4603&amp;lt;br&amp;gt;src/map/clif.c:7219                                                                                              ||      src/net/tmwa/chathandler.cpp:158&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0090 ||      7       ||      CMSG_NPC_TALK                                   ||      src/net/tmwa/npchandler.cpp:133                                                                                                         ||      src/map/clif.c:7738&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0091 ||      22      ||      SMSG_PLAYER_WARP                                ||      src/map/clif.c:1545                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:185&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0092 ||      28      ||      SMSG_CHANGE_MAP_SERVER                          ||      src/map/clif.c:1569                                                                                                                     ||      src/net/tmwa/charserverhandler.cpp:179&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0094 ||      6       ||      (hard-coded)                                    ||      src/net/tmwa/beinghandler.cpp:92                                                                                                        ||      src/map/clif.c:7047&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0095 ||      30      ||      SMSG_BEING_NAME_RESPONSE                        ||      src/map/clif.c:7057                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:484&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0096 ||      -1      ||      CMSG_CHAT_WHISPER                               ||      src/net/tmwa/chathandler.cpp:215                                                                                                        ||      src/map/clif.c:7459&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0097 ||      -1      ||      SMSG_WHISPER                                    ||      src/map/clif.c:4771                                                                                                                     ||      src/net/tmwa/chathandler.cpp:91&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0098 ||      3       ||      SMSG_WHISPER_RESPONSE                           ||      src/map/clif.c:4785                                                                                                                     ||      src/net/tmwa/chathandler.cpp:72&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0099 ||      -1      ||      CMSG_ADMIN_ANNOUNCE&amp;lt;br&amp;gt;CMSG_CHAT_ANNOUNCE       ||      src/net/tmwa/adminhandler.cpp:84                                                                                                        ||      src/map/clif.c:7549&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009A ||      -1      ||      SMSG_GM_CHAT                                    ||      src/map/clif.c:4623&amp;lt;br&amp;gt;src/map/clif.c:8359                                                                                              ||      src/net/tmwa/chathandler.cpp:159&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009B ||      5       ||      CMSG_PLAYER_CHANGE_DIR                          ||      src/net/tmwa/playerhandler.cpp:614                                                                                                      ||      src/map/clif.c:7278&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009C ||      9       ||      SMSG_BEING_CHANGE_DIRECTION                     ||      src/map/clif.c:7293                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:499&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009D ||      17      ||      SMSG_ITEM_VISIBLE                               ||      src/map/clif.c:3815                                                                                                                     ||      src/net/tmwa/itemhandler.cpp:47&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009E ||      17      ||      SMSG_ITEM_DROPPED                               ||      src/map/clif.c:671                                                                                                                      ||      src/net/tmwa/itemhandler.cpp:48&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009F ||      6       ||      CMSG_ITEM_PICKUP                                ||      src/net/tmwa/playerhandler.cpp:607                                                                                                      ||      src/map/clif.c:7573&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A0 ||      23      ||      SMSG_PLAYER_INVENTORY_ADD                       ||      src/map/clif.c:1855&amp;lt;br&amp;gt;src/map/clif.c:1876                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:218&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A1 ||      6       ||      SMSG_ITEM_REMOVE                                ||      src/map/clif.c:715                                                                                                                      ||      src/net/tmwa/itemhandler.cpp:61&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A2 ||      6       ||      CMSG_PLAYER_INVENTORY_DROP                      ||      src/net/tmwa/inventoryhandler.cpp:473                                                                                                   ||      src/map/clif.c:7613&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A4 ||      -1      ||      SMSG_PLAYER_EQUIPMENT                           ||      src/map/clif.c:2017                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:376&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A6 ||      -1      ||      SMSG_PLAYER_STORAGE_EQUIP                       ||      src/map/clif.c:2144&amp;lt;br&amp;gt;src/map/clif.c:2273                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:187&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A7 ||      8       ||      CMSG_PLAYER_INVENTORY_USE                       ||      src/net/tmwa/inventoryhandler.cpp:465                                                                                                   ||      src/map/clif.c:7640&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A8 ||      7       ||      SMSG_ITEM_USE_RESPONSE                          ||      src/map/clif.c:2935                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:284&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A9 ||      6       ||      CMSG_PLAYER_EQUIP                               ||      src/net/tmwa/inventoryhandler.cpp:446                                                                                                   ||      src/map/clif.c:7666&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AA ||      7       ||      SMSG_PLAYER_EQUIP                               ||      src/map/clif.c:2819                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:401&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AB ||      4       ||      CMSG_PLAYER_UNEQUIP                             ||      src/net/tmwa/inventoryhandler.cpp:456                                                                                                   ||      src/map/clif.c:7706&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AC ||      7       ||      SMSG_PLAYER_UNEQUIP                             ||      src/map/clif.c:2839                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:412&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AF ||      6       ||      SMSG_PLAYER_INVENTORY_REMOVE                    ||      src/map/clif.c:1943                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:253&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B0 ||      8       ||      SMSG_PLAYER_STAT_UPDATE_1                       ||      src/map/clif.c:2350&amp;lt;br&amp;gt;src/map/clif.c:2357                                                                                              ||      src/net/tmwa/playerhandler.cpp:234&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B1 ||      8       ||      SMSG_PLAYER_STAT_UPDATE_2                       ||      src/map/clif.c:2437&amp;lt;br&amp;gt;src/map/clif.c:2443&amp;lt;br&amp;gt;src/map/clif.c:2447&amp;lt;br&amp;gt;src/map/clif.c:2451&amp;lt;br&amp;gt;src/map/clif.c:2455                         ||      src/net/tmwa/playerhandler.cpp:333&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B2 ||      3       ||      CMSG_PLAYER_RESTART                             ||      src/net/tmwa/charserverhandler.cpp:314&amp;lt;br&amp;gt;src/net/tmwa/playerhandler.cpp:642                                                            ||      src/map/clif.c:7411&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B3 ||      3       ||      SMSG_CHAR_SWITCH_RESPONSE                       ||      src/map/clif.c:653                                                                                                                      ||      src/net/tmwa/gamehandler.cpp:91&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B4 ||      -1      ||      SMSG_NPC_MESSAGE                                ||      src/map/clif.c:1696                                                                                                                     ||      src/net/tmwa/npchandler.cpp:102&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B5 ||      6       ||      SMSG_NPC_NEXT                                   ||      src/map/clif.c:1716                                                                                                                     ||      src/net/tmwa/npchandler.cpp:111&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B6 ||      6       ||      SMSG_NPC_CLOSE                                  ||      src/map/clif.c:1734                                                                                                                     ||      src/net/tmwa/npchandler.cpp:106&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B7 ||      -1      ||      SMSG_NPC_CHOICE                                 ||      src/map/clif.c:1752                                                                                                                     ||      src/net/tmwa/npchandler.cpp:97&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B8 ||      7       ||      CMSG_NPC_LIST_CHOICE                            ||      src/net/tmwa/npchandler.cpp:159                                                                                                         ||      src/map/clif.c:8194&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B9 ||      6       ||      CMSG_NPC_NEXT_REQUEST                           ||      src/net/tmwa/npchandler.cpp:140                                                                                                         ||      src/map/clif.c:8206&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BB ||      5       ||      CMSG_STAT_UPDATE_REQUEST                        ||      src/net/tmwa/playerhandler.cpp:581                                                                                                      ||      src/map/clif.c:7993&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BC ||      6       ||      SMSG_PLAYER_STAT_UPDATE_4                       ||      src/map/clif.c:2799                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:381&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BD ||      44      ||      SMSG_PLAYER_STAT_UPDATE_5                       ||      src/map/clif.c:2702                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:401&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BE ||      5       ||      SMSG_PLAYER_STAT_UPDATE_6                       ||      src/map/clif.c:2466                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:521&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BF ||      3       ||      CMSG_PLAYER_EMOTE                               ||      src/net/tmwa/playerhandler.cpp:573                                                                                                      ||      src/map/clif.c:7308&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C0 ||      7       ||      SMSG_BEING_EMOTION                              ||      src/map/clif.c:6469&amp;lt;br&amp;gt;src/map/clif.c:6488&amp;lt;br&amp;gt;src/map/clif.c:7317                                                                       ||      src/net/tmwa/beinghandler.cpp:385&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C1 ||      2       ||      CMSG_WHO_REQUEST&amp;lt;br&amp;gt;CMSG_CHAT_WHO               ||      src/map/chathandler.cpp:264                                                                                                             ||      src/map/clif.c:7330&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C2 ||      6       ||      SMSG_WHO_ANSWER                                 ||      src/map/clif.c:7332                                                                                                                     ||      src/net/tmwa/gamehandler.cpp:86&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C3 ||      8       ||      SMSG_BEING_CHANGE_LOOKS                         ||                                                                                                                                              ||      src/net/tmwa/beinghandler.cpp:400&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C4 ||      6       ||      SMSG_NPC_BUY_SELL_CHOICE                        ||      src/map/clif.c:1611                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:64&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C5 ||      7       ||      CMSG_NPC_BUY_SELL_REQUEST                       ||      src/net/tmwa/npchandler.cpp:193&amp;lt;br&amp;gt;src/net/tmwa/npchandler.cpp:200                                                                      ||      src/map/clif.c:7756&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C6 ||      -1      ||      SMSG_NPC_BUY                                    ||      src/map/clif.c:1631                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:72&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C7 ||      -1      ||      SMSG_NPC_SELL                                   ||      src/map/clif.c:1663                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:88&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C8 ||      -1      ||      CMSG_NPC_BUY_REQUEST                            ||      src/net/tmwa/npchandler.cpp:207                                                                                                         ||      src/map/clif.c:7765&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C9 ||      -1      ||      CMSG_NPC_SELL_REQUEST                           ||      src/net/tmwa/npchandler.cpp:215                                                                                                         ||      src/map/clif.c:7784&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CA ||      3       ||      SMSG_NPC_BUY_RESPONSE                           ||      src/map/clif.c:7775                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:114&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CB ||      3       ||      SMSG_NPC_SELL_RESPONSE                          ||      src/map/clif.c:7794                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:124&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CC ||      6       ||      CMSG_ADMIN_KICK                                 ||      src/net/tmwa/adminhandler.cpp:104                                                                                                       ||      src/map/clif.c:8913&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CD ||      6       ||      SMSG_ADMIN_KICK_ACK                             ||      src/map/clif.c:6605                                                                                                                     ||      src/net/tmwa/adminhandler.cpp:62&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E4 ||      6       ||      CMSG_TRADE_REQUEST                              ||      src/net/tmwa/tradehandler.cpp:241                                                                                                       ||      src/map/clif.c:7859&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E5 ||      26      ||      SMSG_TRADE_REQUEST                              ||      src/map/clif.c:3180                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:86&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E6 ||      3       ||      CMSG_TRADE_RESPONSE                             ||      src/net/tmwa/tradehandler.cpp:250                                                                                                       ||      src/map/clif.c:7876&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E7 ||      3       ||      SMSG_TRADE_RESPONSE                             ||      src/map/clif.c:3198                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:120&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E8 ||      8       ||      CMSG_TRADE_ITEM_ADD_REQUEST                     ||      src/net/tmwa/tradehandler.cpp:256&amp;lt;br&amp;gt;src/net/tmwa/tradehandler.cpp:268                                                                  ||      src/map/clif.c:7887&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E9 ||      19      ||      SMSG_TRADE_ITEM_ADD                             ||      src/map/clif.c:3218                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:159&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EB ||      2       ||      CMSG_TRADE_ADD_COMPLETE                         ||      src/net/tmwa/tradehandler.cpp:275                                                                                                       ||      src/map/clif.c:7898&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EC ||      3       ||      SMSG_TRADE_OK                                   ||      src/map/clif.c:3320                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:218&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00ED ||      2       ||      CMSG_TRADE_CANCEL_REQUEST                       ||      src/net/tmwa/tradehandler.cpp:285                                                                                                       ||      src/map/clif.c:7907&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EE ||      2       ||      SMSG_TRADE_CANCEL                               ||      src/map/clif.c:3338                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:223&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EF ||      2       ||      CMSG_TRADE_OK                                   ||      src/net/tmwa/tradehandler.cpp:280                                                                                                       ||      src/map/clif.c:7916&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F0 ||      3       ||      SMSG_TRADE_COMPLETE                             ||      src/map/clif.c:3355                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:230&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F2 ||      6       ||      SMSG_PLAYER_STORAGE_STATUS                      ||      src/map/clif.c:3375&amp;lt;br&amp;gt;src/map/clif.c:3459                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:306&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F3 ||      8       ||      CMSG_MOVE_TO_STORAGE                            ||      src/net/tmwa/inventoryhandler.cpp:508                                                                                                   ||      src/map/clif.c:8370&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F4 ||      21      ||      SMSG_PLAYER_STORAGE_ADD                         ||      src/map/clif.c:3396&amp;lt;br&amp;gt;src/map/clif.c:3481                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:331&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F5 ||      8       ||      CSMG_MOVE_FROM_STORAGE                          ||      src/net/tmwa/inventoryhandler.cpp:514                                                                                                   ||      src/map/clif.c:8393&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F6 ||      8       ||      SMSG_PLAYER_STORAGE_REMOVE                      ||      src/map/clif.c:3543                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:353&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F7 ||      2       ||      CMSG_CLOSE_STORAGE                              ||      src/net/tmwa/inventoryhandler.cpp:500                                                                                                   ||      src/map/clif.c:8452&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F8 ||      2       ||      SMSG_PLAYER_STORAGE_CLOSE                       ||      src/map/clif.c:3562                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:365&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F9 ||      26      ||      CMSG_PARTY_CREATE                               ||      src/net/tmwa/partyhandler.cpp:313                                                                                                       ||      src/map/clif.c:8469&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FA ||      3       ||      SMSG_PARTY_CREATE                               ||      src/map/clif.c:5231                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:79&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FB ||      -1      ||      SMSG_PARTY_INFO                                 ||      src/map/clif.c:5249                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:88&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FC ||      6       ||      CMSG_PARTY_INVITE                               ||      src/net/tmwa/partyhandler.cpp:324                                                                                                       ||      src/map/clif.c:8510&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FD ||      27      ||      SMSG_PARTY_INVITE_RESPONSE                      ||      src/map/clif.c:5327                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:112&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FE ||      30      ||      SMSG_PARTY_INVITED                              ||      src/map/clif.c:5299                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:139&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FF ||      10      ||      CMSG_PARTY_INVITED                              ||      src/net/tmwa/partyhandler.cpp:352                                                                                                       ||      src/map/clif.c:8522&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0100 ||      2       ||      CMSG_PARTY_LEAVE                                ||      src/net/tmwa/partyhandler.cpp:359                                                                                                       ||      src/map/clif.c:8540&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0101 ||      6       ||      SMSG_PARTY_SETTINGS                             ||      src/map/clif.c:5358                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:157&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0102 ||      6       ||      CMSG_PARTY_SETTINGS                             ||      src/net/tmwa/partyhandler.cpp:402&amp;lt;br&amp;gt;src/net/tmwa/partyhandler.cpp:412                                                                  ||      src/map/clif.c:8558&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0103 ||      30      ||      CMSG_PARTY_KICK                                 ||      src/net/tmwa/partyhandler.cpp:364&amp;lt;br&amp;gt;src/net/tmwa/partyhandler.cpp:379                                                                  ||      src/map/clif.c:8549&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0104 ||      79      ||      SMSG_PARTY_MOVE                                 ||      src/map/clif.c:5485                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:220&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0105 ||      31      ||      SMSG_PARTY_LEAVE                                ||      src/map/clif.c:5383                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:232&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0106 ||      10      ||      SMSG_PARTY_UPDATE_HP                            ||      src/map/clif.c:5463                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:263&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0107 ||      10      ||      SMSG_PARTY_UPDATE_COORDS                        ||      src/map/clif.c:5443                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:283&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0108 ||      -1      ||      CMSG_PARTY_MESSAGE                              ||      src/net/tmwa/partyhandler.cpp:386                                                                                                       ||      src/map/clif.c:8571&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0109 ||      -1      ||      SMSG_PARTY_MESSAGE                              ||      src/map/clif.c:5424                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:290&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x010C ||      6       ||      SMSG_MVP                                        ||      src/map/clif.c:5708                                                                                                                     ||      src/net/tmwa/chathandler.cpp:187&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x010E ||      11      ||      SMSG_PLAYER_SKILL_UP&amp;lt;br&amp;gt;SMSG_GUILD_SKILL_UP     ||      src/map/clif.c:4186&amp;lt;br&amp;gt;src/map/clif.c:6345                                                                                              ||      src/net/tmwa/specialhandler.cpp:115&amp;lt;br&amp;gt;src/net/tmwa/guildhandler.cpp:253&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x010F ||      -1      ||      SMSG_PLAYER_SKILLS                              ||      src/map/clif.c:4145                                                                                                                     ||      src/net/tmwa/specialhandler.cpp:93&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0110 ||      10      ||      SMSG_SKILL_FAILED                               ||      src/map/clif.c:4259                                                                                                                     ||      src/net/tmwa/specialhandler.cpp:129                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0112 ||      4       ||      CMSG_SKILL_LEVELUP_REQUEST                      ||      src/net/tmwa/playerhandler.cpp:597                                                                                                      ||      src/map/clif.c:8002                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0113 ||      10      ||      CMSG_SKILL_USE_BEING                            ||      src/net/tmwa/specialhandler.cpp:234                                                                                                     ||      src/map/clif.c:8011                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0116 ||      10      ||      CMSG_SKILL_USE_POSITION                         ||      src/net/tmwa/specialhandler.cpp:242                                                                                                     ||      src/map/clif.c:8088                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0119 ||      13      ||      SMSG_PLAYER_STATUS_CHANGE                       ||      src/map/clif.c:1268&amp;lt;br&amp;gt;src/map/clif.c:2885                                                                                              ||      src/net/tmwa/beinghandler.cpp:671                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x011B ||      20      ||      CMSG_SKILL_USE_MAP                              ||      src/net/tmwa/specialhandler.cpp:251                                                                                                     ||      src/map/clif.c:8158                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0139 ||      16      ||      SMSG_PLAYER_MOVE_TO_ATTACK                      ||      src/map/clif.c:5510                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:662                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x013A ||      4       ||      SMSG_PLAYER_ATTACK_RANGE                        ||      src/map/clif.c:2474                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:423                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x013B ||      4       ||      SMSG_PLAYER_ARROW_MESSAGE                       ||      src/map/clif.c:2780                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:545                                                                      &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x013C ||      4       ||      SMSG_PLAYER_ARROW_EQUIP                         ||      src/map/clif.c:2761                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:427                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0141 ||      14      ||      SMSG_PLAYER_STAT_UPDATE_3                       ||      src/map/clif.c:2482&amp;lt;br&amp;gt;src/map/clif.c:2489&amp;lt;br&amp;gt;src/map/clif.c:2496&amp;lt;br&amp;gt;src/map/clif.c:2503&amp;lt;br&amp;gt;src/map/clif.c:2510&amp;lt;br&amp;gt;src/map/clif.c:2517  ||      src/net/tmwa/playerhandler.cpp:370                                                                      &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0142 ||      6       ||      SMSG_NPC_INT_INPUT                              ||      src/map/clif.c:1772                                                                                                                     ||      src/net/tmwa/npchandler.cpp:116                                                                         &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0143 ||      10      ||      CMSG_NPC_INT_RESPONSE                           ||      src/net/tmwa/npchandler.cpp:166                                                                                                         ||      src/map/clif.c:8215                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0146 ||      6       ||      CMSG_NPC_CLOSE                                  ||      src/net/tmwa/npchandler.cpp:146                                                                                                         ||      src/map/clif.c:8265                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0148 ||      8       ||      SMSG_BEING_RESURRECT                            ||      src/map/clif.c:4667                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:293                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0149 ||      9       ||      CMSG_ADMIN_MUTE                                 ||      src/net/tmwa/adminhandler.cpp:137                                                                                                       ||      src/map/clif.c:9025                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014C ||      -1      ||      SMSG_GUILD_ALIANCE_INFO                         ||      src/map/clif.c:5962                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:157                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014D ||      2       ||      CMSG_GUILD_CHECK_MASTER                         ||                                                                                                                                              ||      src/map/clif.c:8661                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014E ||      6       ||      SMSG_GUILD_MASTER_OR_MEMBER                     ||      src/map/clif.c:5842                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:134                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014F ||      6       ||      CMSG_GUILD_REQUEST_INFO                         ||      src/net/tmwa/guildhandler.cpp:457                                                                                                       ||      src/map/clif.c:8670                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0151 ||      6       ||      CMSG_GUILD_REQUEST_EMBLEM                       ||                                                                                                                                              ||      src/map/clif.c:8760                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0152 ||      -1      ||      SMSG_GUILD_EMBLEM                               ||      src/map/clif.c:6135                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:243                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0153 ||      -1      ||      CMSG_GUILD_CHANGE_EMBLEM                        ||                                                                                                                                              ||      src/map/clif.c:8771                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0154 ||      -1      ||      SMSG_GUILD_MEMBER_LIST                          ||      src/map/clif.c:5996                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:171                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0155 ||      -1      ||      CMSG_GUILD_CHANGE_MEMBER_POS                    ||                                                                                                                                              ||      src/map/clif.c:8731                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0156 ||      -1      ||      SMSG_GUILD_MEMBER_POS_CHANGE                    ||      src/map/clif.c:6110                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:236                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0159 ||      54      ||      CMSG_GUILD_LEAVE                                ||      src/net/tmwa/guildhandler.cpp:425                                                                                                       ||      src/map/clif.c:8807                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015A ||      66      ||      SMSG_GUILD_LEAVE                                ||      src/map/clif.c:6252                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:322                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015B ||      54      ||      CMSG_GUILD_EXPULSION                            ||      src/net/tmwa/guildhandler.cpp:434                                                                                                       ||      src/map/clif.c:8817                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015C ||      90      ||      SMSG_GUILD_EXPULSION                            ||      src/map/clif.c:6270                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:327                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015D ||      42      ||      CMSG_GUILD_BREAK                                ||                                                                                                                                              ||      src/map/clif.c:8907                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015E ||      6       ||      SMSG_GUILD_BROKEN                               ||      src/map/clif.c:6453                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:384                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0160 ||      -1      ||      SMSG_GUILD_POS_INFO_LIST                        ||      src/map/clif.c:6062                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:212                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0161 ||      -1      ||      CMSG_GUILD_CHANGE_POS_INFO                      ||                                                                                                                                              ||      src/map/clif.c:8704                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0162 ||      -1      ||      SMSG_GUILD_SKILL_INFO                           ||      src/map/clif.c:6160                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:253                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0163 ||      -1      ||      SMSG_GUILD_EXPULSION_LIST                       ||      src/map/clif.c:6294                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:333                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0165 ||      30      ||      CMSG_GUILD_CREATE                               ||      src/net/tmwa/guildhandler.cpp:396                                                                                                       ||      src/map/clif.c:8652                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0166 ||      -1      ||      SMSG_GUILD_POS_NAME_LIST                        ||      src/map/clif.c:6036                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:199                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0167 ||      3       ||      SMSG_GUILD_CREATE_RESPONSE                      ||      src/map/clif.c:5771                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:91                                                                        &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0168 ||      14      ||      CMSG_GUILD_INVITE                               ||      src/net/tmwa/guildhandler.cpp:408                                                                                                       ||      src/map/clif.c:8789                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0169 ||      3       ||      SMSG_GUILD_INVITE_ACK                           ||      src/map/clif.c:6235                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:288                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016A ||      30      ||      SMSG_GUILD_INVITE                               ||      src/map/clif.c:6217                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:279                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016B ||      10      ||      CMSG_GUILD_INVITE_REPLY                         ||      src/net/tmwa/guildhandler.cpp:416                                                                                                       ||      src/map/clif.c:8798                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016C ||      43      ||      SMSG_GUILD_POSITION_INFO                        ||      src/map/clif.c:5792                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:114                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016D ||      14      ||      SMSG_GUILD_MEMBER_LOGIN                         ||      src/map/clif.c:5811                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:128                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016E ||      186     ||      CMSG_GUILD_CHANGE_NOTICE                        ||                                                                                                                                              ||      src/map/clif.c:8780                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016F ||      182     ||      SMSG_GUILD_NOTICE                               ||      src/map/clif.c:6198                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:274                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0170 ||      14      ||      CMSG_GUILD_ALLIANCE_REQUEST                     ||                                                                                                                                              ||      src/map/clif.c:8871                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0171 ||      30      ||      SMSG_GUILD_REQ_ALLIANCE                         ||      src/map/clif.c:6367                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:366                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0172 ||      10      ||      CMSG_GUILD_ALLIANCE_REPLY                       ||                                                                                                                                              ||      src/map/clif.c:8880                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0173 ||      3       ||      SMSG_GUILD_REQ_ALLIANCE_ACK                     ||      src/map/clif.c:6385                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:371                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0174 ||      -1      ||      SMSG_GUILD_POSITION_CHANGED                     ||      src/map/clif.c:6087                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:227                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x017E ||      -1      ||      CMSG_GUILD_MESSAGE                              ||      src/net/tmwa/guildhandler.cpp:443                                                                                                       ||      src/map/clif.c:8831                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x017F ||      -1      ||      SMSG_GUILD_MESSAGE                              ||      src/map/clif.c:6323&amp;lt;br&amp;gt;src/map/clif.c:6581                                                                                              ||      src/net/tmwa/guildhandler.cpp:347                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0180 ||      6       ||      CMSG_GUILD_OPPOSITION                           ||                                                                                                                                              ||      src/map/clif.c:8898                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0181 ||      3       ||      SMSG_GUILD_OPPOSITION_ACK                       ||      src/map/clif.c:6421                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:380                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0183 ||      10      ||      CMSG_GUILD_ALLIANCE_DELETE                      ||                                                                                                                                              ||      src/map/clif.c:8889                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0184 ||      10      ||      SMSG_GUILD_DEL_ALLIANCE                         ||      src/map/clif.c:6403                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:375                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x018A ||      4       ||      CMSG_CLIENT_QUIT                                ||      src/net/tmwa/gamehandler.cpp:161                                                                                                        ||      src/map/clif.c:6611                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x018B ||      4       ||      SMSG_MAP_QUIT_RESPONSE                          ||      src/map/clif.c:7012&amp;lt;br&amp;gt;src/map/clif.c:7440                                                                                              ||      src/net/tmwa/gamehandler.cpp:98                                                                         &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0190 ||      90      ||      CMSG_SKILL_USE_POSITION_MORE                    ||                                                                                                                                              ||      src/map/clif.c:8088                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0195 ||      102     ||      SMSG_PLAYER_GUILD_PARTY_INFO                    ||      src/map/clif.c:7107                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:490                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0196 ||      9       ||      SMSG_BEING_STATUS_CHANGE                        ||      src/map/clif.c:4585                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:688                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x019B ||      10      ||      SMSG_BEING_SELFEFFECT                           ||      src/map/clif.c:2858&amp;lt;br&amp;gt;src/map/clif.c:6696                                                                                              ||      src/net/tmwa/beinghandler.cpp:372                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x019C ||      4       ||      CMSG_ADMIN_LOCAL_ANNOUNCE                       ||      src/net/tmwa/adminhandler.cpp:91                                                                                                        ||      src/map/clif.c:8350                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x019D ||      6       ||      CMSG_ADMIN_HIDE                                 ||      src/net/tmwa/adminhandler.cpp:98                                                                                                        ||      src/map/clif.c:8996                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01B1 ||      7       ||      SMSG_TRADE_ITEM_ADD_RESPONSE                    ||      src/map/clif.c:3299                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:176                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01B6 ||      114     ||      SMSG_GUILD_BASIC_INFO                           ||      src/map/clif.c:5865                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:138                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01C8 ||      13      ||      SMSG_PLAYER_INVENTORY_USE                       ||      src/map/clif.c:2945                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:265                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D4 ||      6       ||      SMSG_NPC_STR_INPUT                              ||      src/map/clif.c:1790                                                                                                                     ||      src/net/tmwa/npchandler.cpp:121                                                                         &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D5 ||      8       ||      CMSG_NPC_STR_RESPONSE                           ||      src/net/tmwa/npchandler.cpp:173                                                                                                         ||      src/map/clif.c:8234                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D7 ||      11      ||      SMSG_BEING_CHANGE_LOOKS2                        ||      src/map/clif.c:2608&amp;lt;br&amp;gt;src/map/clif.c:2675                                                                                              ||      src/net/tmwa/beinghandler.cpp:401                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D8 ||      54      ||      SMSG_PLAYER_UPDATE_1                            ||      src/map/clif.c:845                                                                                                                      ||      src/net/tmwa/beinghandler.cpp:511                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D9 ||      53      ||      SMSG_PLAYER_UPDATE_2                            ||      src/map/clif.c:1292                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:512                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01DA ||      60      ||      SMSG_PLAYER_MOVE                                ||      src/map/clif.c:934                                                                                                                      ||      src/net/tmwa/beinghandler.cpp:513                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01DE ||      33      ||      SMSG_SKILL_DAMAGE                               ||      src/map/clif.c:4298                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:311                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01EE ||      -1      ||      SMSG_PLAYER_INVENTORY                           ||      src/map/clif.c:1965                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:134                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01F0 ||      -1      ||      SMSG_PLAYER_STORAGE_ITEMS                       ||      src/map/clif.c:2097&amp;lt;br&amp;gt;src/map/clif.c:2225                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:135                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x020C ||      10      ||      SMSG_ADMIN_IP                                   ||      src/map/clif.c:7120                                                                                                                     ||      src/net/tmwa/adminhandler.cpp:69                                                                        &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x7530 ||      2       ||      CMSG_SERVER_VERSION_REQUEST                     ||      src/net/tmwa/loginhandler.cpp:220                                                                                                       ||      src/login/login.c:2257&amp;lt;br&amp;gt;src/login/login.c:4011&amp;lt;br&amp;gt;src/char/char.c:3568&amp;lt;br&amp;gt;src/map/clif.c:10174        &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x7531 ||      10      ||      SMSG_SERVER_VERSION_RESPONSE                    ||      src/login/login.c:2260&amp;lt;br&amp;gt;src/login/login.c:4014&amp;lt;br&amp;gt;src/char/char.c:3569&amp;lt;br&amp;gt;src/map/clif.c:10175                                        ||      src/net/tmwa/loginhandler.cpp:197                                                                       &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Free Packets ==&lt;br /&gt;
These are packets that are not parsed or sent by the client, but have a known length, so they can be used by future servers and the client will just ignore them, not crash.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
!packet !!len   !!notes&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0000 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0074 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0075 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0076 ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0077 ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0079 ||53    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x007A ||58    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0082 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0083 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0084 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x008B ||23    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0093 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00A3 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00A5 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00AE ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00BA ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00CE ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00CF ||27    ||clif_parse_PMIgnore&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D0 ||3     ||clif_parse_PMIgnoreAll, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D1 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D2 ||4     ||used by ManaPlus (sent from atcommand.cpp)&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D3 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D4 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D5 ||-1    ||clif_parse_CreateChatRoom&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D6 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D7 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D8 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D9 ||14    ||clif_parse_ChatAddMember&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DA ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DB ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DC ||28    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DD ||29    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DE ||-1    ||clif_parse_ChatRoomStatusChange&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DF ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E0 ||30    ||clif_parse_ChangeChatOwner&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E1 ||30    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E2 ||26    ||clif_parse_KickFromChat&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E3 ||2     ||clif_parse_ChatLeave&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00EA ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00F1 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x010A ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x010B ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x010D ||2     ||clif_parse_RequestMemo&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0111 ||39    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0114 ||31    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0115 ||35    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0117 ||18    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0118 ||2     ||clif_parse_StopAttack, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011A ||15    ||SMSG_SKILL_NO_DAMAGE, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011C ||68    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011D ||2     ||clif_parse_RequestMemo&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011E ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011F ||16    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0120 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0121 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0122 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0123 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0124 ||21    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0125 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0126 ||8     ||clif_parse_PutItemToCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0127 ||8     ||clif_parse_GetItemFromCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0128 ||8     ||clif_parse_MoveFromKafraToCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0129 ||8     ||clif_parse_MoveToKafraFromCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012A ||2     ||clif_parse_RemoveOption&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012B ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012C ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012D ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012E ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012F ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0130 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0131 ||86    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0132 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0133 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0134 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0135 ||7     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0136 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0137 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0138 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x013D ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x013E ||24    ||SMSG_SKILL_CASTING, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x013F ||26    ||clif_parse_GM_Monster_Item&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0140 ||22    ||clif_parse_MapMove&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0144 ||23    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0145 ||19    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0147 ||39    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x014A ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x014B ||27    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0150 ||110   ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0157 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0158 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x015F ||42    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0164 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0175 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0176 ||106   ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0177 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0178 ||4     ||clif_parse_ItemIdentify&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0179 ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017A ||4     ||clif_parse_UseCard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017B ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017C ||6     ||clif_parse_InsertCard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017D ||7     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0182 ||106   ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0185 ||34    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0187 ||6     ||src/char/char.c:3562&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0188 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0189 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018C ||29    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018D ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018E ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018F ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0191 ||86    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0192 ||24    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0193 ||6     ||clif_parse_SolveCharName&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0194 ||30    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0197 ||4     ||clif_parse_ResetChar&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0198 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0199 ||4     ||SMSG_PVP_MAP_MODE, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x019A ||14    ||SMSG_PVP_SET, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x019E ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x019F ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A0 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A1 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A2 ||35    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A3 ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A4 ||11    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A5 ||26    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A6 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A7 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A8 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A9 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AA ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AB ||12    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AC ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AD ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AE ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AF ||4     ||clif_parse_ChangeCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B0 ||11    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B2 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B3 ||67    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B4 ||12    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B5 ||18    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B7 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B8 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B9 ||6     ||SMSG_SKILL_CAST_CANCEL, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BA ||26    ||clif_parse_Shift&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BB ||26    ||clif_parse_Shift&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BC ||26    ||clif_parse_Recall&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BD ||26    ||clif_parse_Recall&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BE ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BF ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C0 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C1 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C2 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C3 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C4 ||22    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C5 ||22    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C6 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C7 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C9 ||97    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CB ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CC ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CD ||29    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CE ||6     ||clif_parse_AutoSpell&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CF ||28    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D0 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D1 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D2 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D3 ||35    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D6 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DB ||2     ||src/login/login.c:3861&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DC ||-1    ||src/login/login.c:3898&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DD ||47    ||src/login/login.c:3645&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DF ||6     ||clif_parse_GMReqNoChatCount&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E0 ||30    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E1 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E2 ||34    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E3 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E4 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E5 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E6 ||26    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E7 ||2     ||clif_parse_sn_doridori&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E8 ||28    ||clif_parse_CreateParty2&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E9 ||81    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EA ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EB ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EC ||26    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01ED ||2     ||clif_parse_sn_explosionspirits&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EF ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F1 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F2 ||20    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F3 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F4 ||32    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F5 ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F6 ||34    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F7 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F8 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F9 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FA ||48    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FB ||56    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FC ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FD ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FE ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FF ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0200 ||26    ||src/login/login.c:3632&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0204 ||18    ||src/login/login.c:3638&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x020B ||19    ||src/char/char.c:3030&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Internal Packets ==&lt;br /&gt;
These packets are sent between the servers. Details are subject to change without notice.&lt;br /&gt;
&lt;br /&gt;
=== login - char ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x2709|mode=row_internal}}&lt;br /&gt;
{{Net:0x2711|mode=row_internal}}&lt;br /&gt;
{{Net:0x2712|mode=row_internal}}&lt;br /&gt;
{{Net:0x2713|mode=row_internal}}&lt;br /&gt;
{{Net:0x2714|mode=row_internal}}&lt;br /&gt;
{{Net:0x2716|mode=row_internal}}&lt;br /&gt;
{{Net:0x2717|mode=row_internal}}&lt;br /&gt;
{{Net:0x2722|mode=row_internal}}&lt;br /&gt;
{{Net:0x2723|mode=row_internal}}&lt;br /&gt;
{{Net:0x2724|mode=row_internal}}&lt;br /&gt;
{{Net:0x2727|mode=row_internal}}&lt;br /&gt;
{{Net:0x2731|mode=row_internal}}&lt;br /&gt;
{{Net:0x2740|mode=row_internal}}&lt;br /&gt;
{{Net:0x2741|mode=row_internal}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== login - admin ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{Net:0x2716|mode=row_internal}} --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== char - map ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{Net:0x2716|mode=row_internal}} --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== inter.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3000 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3001 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3002 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3003 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3004 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3005 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3010 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3011 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3018 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3019 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3020 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 72 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3021 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3022 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 52 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3023 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3024 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3025 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 29 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3026 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3027 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3028 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 34 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3030 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3031 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3032 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3034 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 55 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3035 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 19 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3036 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3037 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3038 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3039 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303a &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303b &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303c &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303d &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 19 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303e &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 186 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303f &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3040 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3041 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3080 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 48 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3081 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3082 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3083 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== intif.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3800 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3801 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3802 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 27 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3803 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3804 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3810 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3811 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3818 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3819 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3820 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 35 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3821 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3822 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3823 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3824 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 34 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3825 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 29 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3826 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3827 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3830 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3831 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3832 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3834 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 79 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3835 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 19 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3836 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3837 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3839 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383a &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383b &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383c &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383d &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 67 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383e &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 186 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383f &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3840 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3841 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3842 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3880 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3881 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3882 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3883 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== chrif.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2af8 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 60 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2af9 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afa &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afb &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 27 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afc &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 22 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afd &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afe &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2aff &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b00 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b01 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b02 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 18 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b03 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b04 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b05 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 49 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b06 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 44 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b08 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b09 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 30 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0a &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0b &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0c &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 86 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0d &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0e &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 44 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0f &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 34 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b10 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b11 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b12 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b13 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b14 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b15 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== char.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;!-- 0x2af7 .. 0x2b16 --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:O11c/how&amp;diff=30520</id>
		<title>User:O11c/how</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:O11c/how&amp;diff=30520"/>
		<updated>2014-05-15T07:06:55Z</updated>

		<summary type="html">&lt;p&gt;O11c: add transclusion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We&#039;re using Git as version control system for our source files and content. Have a look at our [[Working With Git|Tutorial]] about how to use Git. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Set Up=&lt;br /&gt;
This is a how to help content development for official server (tmwAthena) using Ubuntu and the Mana+ client. Other OS and clients may differ. Following this guide, you should be able to get development testing versions of the client data (tmwa-client-data), server-data (tmwa-server-data) and participate in development by using a localhost server. After getting these, you can both test current development and begin development in the direction you find most fitting.&lt;br /&gt;
&lt;br /&gt;
==Install Dependencies==&lt;br /&gt;
In addition to the basic build tools (GCC, Make, headers, ...), [http://www.gnu.org/software/bison/ &#039;&#039;&#039;Bison&#039;&#039;&#039;], and [http://sourceforge.net/projects/flex/ &#039;&#039;&#039;Flex&#039;&#039;&#039;] are needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [https://www.debian.org/ Debian] derivates (including [http://www.ubuntu.com/ Ubuntu])&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo apt-get install g++ flex bison python make realpath git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [https://fedoraproject.org/ Fedora] derivates&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo yum install gcc-c++ flex bison make git&lt;br /&gt;
&lt;br /&gt;
Note that you must have gcc 4.6 or later. Any modern distro will have this version, but &amp;quot;stable&amp;quot; distros with very long release cycles, such as Red Hat Enterprise Linux, might not.&lt;br /&gt;
&lt;br /&gt;
==Set Up Own Server==&lt;br /&gt;
&#039;&#039;&#039;Here are the steps to use when creating a new local testing server.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  mkdir ~/tmwAthena&lt;br /&gt;
  cd ~/tmwAthena/&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa.git&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa-server-data.git&lt;br /&gt;
  cd tmwa/&lt;br /&gt;
  ./configure --user # &#039;&#039;(Assuming ~/bin is in your PATH if not use ./configure)&#039;&#039;&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  git config --global url.git@github.com:.pushInsteadOf git://github.com &#039;&#039;{{ref|push}} {{ref|once}}&#039;&#039;&lt;br /&gt;
  cd ../tmwa-server-data&lt;br /&gt;
* Preferably, add the update hooks.&lt;br /&gt;
  ln -s ../../git/hooks/post-merge .git/hooks/&lt;br /&gt;
  ln -s ../../../../git/hooks/post-merge .git/modules/client-data/hooks/ # &#039;&#039;(git 1.7.8 or newer)&#039;&#039;&lt;br /&gt;
  ln -s ../../../git/hooks/post-merge client-data/.git/hooks/ # &#039;&#039;(git 1.7.7 or older)&#039;&#039;&lt;br /&gt;
  make conf&lt;br /&gt;
  cd client-data&lt;br /&gt;
  git checkout master&lt;br /&gt;
  cd music&lt;br /&gt;
  git checkout master&lt;br /&gt;
&lt;br /&gt;
==Hosting Updates==&lt;br /&gt;
TMW makes it easy to generate delta zips out of a repository, once it is initially set up.&lt;br /&gt;
&lt;br /&gt;
It will put them in ~/www/updates/, which may be a symlink to wherever your web server is really serving. Setting up a webserver is not covered here.&lt;br /&gt;
&lt;br /&gt;
Once everything is set up, just run &#039;make updates&#039; from the server-data dir every time client-data changes. It will do nothing if appropriate, generate complete zips the first time, and incremental zips afterwards.&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* You must put news.txt and skeleton resources.xml file (and maybe an empty resources2.txt) in ~/www/updates/ first.&lt;br /&gt;
* Music updates are never added; they should be in the skeleton and updated manually if needed.&lt;br /&gt;
* You definitely want to run one of the analyzer scripts frequently, and remove the old updates.&lt;br /&gt;
&lt;br /&gt;
==Updating the Server==&lt;br /&gt;
&lt;br /&gt;
==  Running and Administrating the Server ==&lt;br /&gt;
&lt;br /&gt;
The TMWAthena is in fact 3 servers:&lt;br /&gt;
* &#039;&#039;&#039;tmwa-login&#039;&#039;&#039; which manages accounts and connection to char server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-char&#039;&#039;&#039; which manages  characters and connects them to the map server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-map&#039;&#039;&#039; which manages game content (maps, monsters, items, scripts...) and their interaction with characters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Start the servers: Open a terminal and run all the local servers. To stop them, either close the terminal or type control-C.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
  ./run-all&lt;br /&gt;
* In a new terminal, Launch &#039;&#039;&#039;tmwa-admin&#039;&#039;&#039; the administration tool, add yourself as an user and make yourself a GM:&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login&lt;br /&gt;
 tmwa-admin&lt;br /&gt;
 add &amp;lt;username&amp;gt; M &amp;lt;password&amp;gt; &lt;br /&gt;
 gm &amp;lt;username&amp;gt; 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; : Be sure that you are running tmwa-admin from within the &amp;quot;login/&amp;quot; directory. Check that the config files are correct: the connection port should be 6901 for tmwa&#039;s configuration, not 6900, which is the hard-coded default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See also:&#039;&#039;&#039; [[GM Commands]]&lt;br /&gt;
&lt;br /&gt;
== Connecting ==&lt;br /&gt;
# Open a command line terminal and run your client pointing to your client data and your local server :&lt;br /&gt;
  manaplus --server localhost --port 6901 -u -d ~/tmwAthena/tmwa-server-data/client-data&lt;br /&gt;
&lt;br /&gt;
If all went well, you are now ready to test new content and participate with development.&lt;br /&gt;
&lt;br /&gt;
== develop new content==&lt;br /&gt;
&#039;&#039;&#039;You are now free to do some changes, first close the client and your servers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Notes for client data changes: 1) commit and push them in the client-data repo 2) commit and push &amp;quot;client-data&amp;quot; when it shows &amp;quot;(new commits)&amp;quot; in your server-data 3) commit and push other server data changes.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Make your modifications (e.g. Change a map) and save them.&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/client-data&#039;&#039;&lt;br /&gt;
  git status&#039;&#039;&lt;br /&gt;
  git add [modified files]&#039;&#039;&lt;br /&gt;
  git commit&#039;&#039;&lt;br /&gt;
  git push&#039;&#039; {{note|push}}&lt;br /&gt;
  cd ..&lt;br /&gt;
  make maps &#039;&#039;(if you changed a map)&#039;&#039;&lt;br /&gt;
  git status&lt;br /&gt;
  git add [modified files]&lt;br /&gt;
  git add client-data (if &#039;&#039;git status&#039;&#039; shows &#039;&#039;(new commits)&#039;&#039;. &#039;&#039;&#039;Don&#039;t do this if you don&#039;t have push access to client-data!&#039;&#039;&#039;)&lt;br /&gt;
  git commit&lt;br /&gt;
  git push {{note|push}}&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
{{note|push}} : a step for those with commit access to the remote repositories.  For others, you don&#039;t need to reconfigure your clone and please make a patch on steps where &#039;&#039;git push&#039;&#039; is suggested.  &lt;br /&gt;
&lt;br /&gt;
{{note|once}} : you only need to do this once, no matter how many times you independently clone the repositories.&lt;br /&gt;
&lt;br /&gt;
  git format-patch -M -C origin/master&lt;br /&gt;
* pastebin the patch(es) and post for review at irc.freenode.net channel: #themanaworld-dev or on our [http://forums.themanaworld.org/viewforum.php?f=18 development forums]. &#039;&#039;&#039;Extensive patches must be posted on the forum as a series of well-formed patches with descriptive commit messages.&#039;&#039;&#039; In particular, later patches should not fix errors introduced in earlier patches, and each patch should form a logically independent part.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; &#039;&#039;&#039;Note :&#039;&#039;&#039; This is kind of outdated; with github it&#039;s often easier to do patches on branches there. see: &#039;&#039;&#039;[[Working With Git]]&#039;&#039;&#039; page&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can also pull the data which has been modified.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data&lt;br /&gt;
 git pull&lt;br /&gt;
* If you haven&#039;t installed the hook, &lt;br /&gt;
 git submodule update --merge  &#039;&#039;at toplevel (for client-data) and in client-data (for music)&#039;&#039;&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See Also:&#039;&#039;&#039; [http://wiki.themanaworld.org/images/3/33/README.mv.txt README.mv.txt] - Documentation on using git submodules, like client-data and tmw-music.&lt;br /&gt;
&lt;br /&gt;
= Git guide =&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable mw-collapsible mw-collapsed&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Git guide&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
{{User:Cassy/Git}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=Making Content=&lt;br /&gt;
==Making Map Content==&lt;br /&gt;
See [[Mapping Tutorial]].&lt;br /&gt;
===Python Converter Tool===&lt;br /&gt;
After editing maps for the client, you need to generate the walkmaps and imports for the server. yhis can be done either by the &#039;&#039;&#039;[[Tiled]]&#039;&#039;&#039; application or by running the python script &#039;&#039;&#039;tmx_converter.py&#039;&#039;&#039; which is located in the &#039;&#039;&#039;tools&#039;&#039;&#039; folder of the &#039;&#039;&#039;Server Data&#039;&#039;&#039; folder.&lt;br /&gt;
(see [[Mapping Tutorial#Creating the WLK files]])&lt;br /&gt;
After that, commit and push the files that the converter edited. Note that, if you do not have push access to the main repository, you should let someone else update the submodule itself.&lt;br /&gt;
&lt;br /&gt;
==Getting Art Content Into The Game==&lt;br /&gt;
* Post [CPT] or [WIP] art on the [http://forums.themanaworld.org/viewforum.php?f=8 graphics development forum].&lt;br /&gt;
* Work with the Art Director and collaborators on getting the art consistent.&lt;br /&gt;
* When finished, edit topic as [FND].&lt;br /&gt;
* Art Director approves [FND] art and marks it [RC].  Should the art need animation or special effect, the Art Director requests xml for it.  If not, the Art Director commits it and marks as [GIT].&lt;br /&gt;
* XML Team reviews or drafts xml related to the art, then commits the .png and .xml.  Topic can be marked as [GIT].&lt;br /&gt;
::* Art content affected: client-data/graphics/sprites then related directory for .png and .xml animation addition.&lt;br /&gt;
* Project developer requests database entry reservations from a General Content Team developer.&lt;br /&gt;
::* Map entry server data affected: resnametable.txt and .wlk files in the data directory, map content files in the npc directory.&lt;br /&gt;
::* Map entry client data affected: .tmx files in the maps directory.&lt;br /&gt;
::* Map entry requires the running of the .tmx converter (aka java converter) before commits can be made.&lt;br /&gt;
::* Art content server data affected: entry made in the item_db.txt, mob_db.txt or mob_skills_db.txt in the db directory.&lt;br /&gt;
::* Art content client data affected: entry added in items.xml, monsters.xml or other identification file.&lt;br /&gt;
&lt;br /&gt;
===Handling General Content Team [REQ]s===&lt;br /&gt;
* General Content Team member adds a [REQ] topic to the graphics development forum.&lt;br /&gt;
* General Content Team member adds the [REQ] topic as a hyperlink under &amp;quot;Required Art&amp;quot; on the [[Art in Development]] page.&lt;br /&gt;
* Art Director attempts to network with other artists to assign the art to an artist.&lt;br /&gt;
&lt;br /&gt;
==Bit Masking==&lt;br /&gt;
Bit Masking helps us reduce our variable count while offering a dynamic method of script writing that is versatile and flexible to both linear and non-linear script writing. &lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/6520164/tester1.txt Bit Masking Test Script]&lt;br /&gt;
&lt;br /&gt;
==Generating client updates==&lt;br /&gt;
* Shutdown all your servers.&lt;br /&gt;
&lt;br /&gt;
* First we are going to check the config files to be sure the paths are correct.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 add-git-attributes  edit-all-to-export-tilesets.sh  formatXML.sh  list-tileset-order  map-db.py       minimap-render.py&lt;br /&gt;
 adler32             edit-map-tileset-names.sh       indent.xsl    make-updates        map-diff.py&lt;br /&gt;
 End of output &lt;br /&gt;
&lt;br /&gt;
* The easiest solution is to create a symbolic link to that directory &lt;br /&gt;
ln -s /var/www/tmwupdates ~/www/updates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
* You can Edit the make-updates file with gedit or nano or vi.&lt;br /&gt;
Search for the folowing lines:&lt;br /&gt;
output=~/www/updates&lt;br /&gt;
And change them to:&lt;br /&gt;
output=/var/www/tmwupdates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login/conf&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 ladmin_athena.conf         lan_support.conf   login_local.conf.example &lt;br /&gt;
 ladmin_local.conf          login_athena.conf &lt;br /&gt;
 ladmin_local.conf.example  login_local.conf &lt;br /&gt;
 End of output&lt;br /&gt;
&lt;br /&gt;
*Edit the login_local.conf with an editor and look for the following line:&lt;br /&gt;
 update_host: http://updates.themanaworld.org/&lt;br /&gt;
*Change that line to:&lt;br /&gt;
 update_host: http://127.0.0.1/tmwupdates/ (or use your external ip)&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 &lt;br /&gt;
* Open a terminal. &lt;br /&gt;
First we compile the adler32 tool to generate a hash.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/adler32/ &lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 Output must be: &lt;br /&gt;
 gcc -lz -o adler32 adler32.c&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
* Now that we compiled the adler tool we can make us a update.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;br /&gt;
&lt;br /&gt;
* Each time you want to make new updates&lt;br /&gt;
 make sure you have a new commit then&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:O11c/how&amp;diff=30519</id>
		<title>User:O11c/how</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:O11c/how&amp;diff=30519"/>
		<updated>2014-05-15T07:03:50Z</updated>

		<summary type="html">&lt;p&gt;O11c: Import unmodified&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We&#039;re using Git as version control system for our source files and content. Have a look at our [[Working With Git|Tutorial]] about how to use Git. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Set Up=&lt;br /&gt;
This is a how to help content development for official server (tmwAthena) using Ubuntu and the Mana+ client. Other OS and clients may differ. Following this guide, you should be able to get development testing versions of the client data (tmwa-client-data), server-data (tmwa-server-data) and participate in development by using a localhost server. After getting these, you can both test current development and begin development in the direction you find most fitting.&lt;br /&gt;
&lt;br /&gt;
==Install Dependencies==&lt;br /&gt;
In addition to the basic build tools (GCC, Make, headers, ...), [http://www.gnu.org/software/bison/ &#039;&#039;&#039;Bison&#039;&#039;&#039;], and [http://sourceforge.net/projects/flex/ &#039;&#039;&#039;Flex&#039;&#039;&#039;] are needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [https://www.debian.org/ Debian] derivates (including [http://www.ubuntu.com/ Ubuntu])&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo apt-get install g++ flex bison python make realpath git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [https://fedoraproject.org/ Fedora] derivates&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo yum install gcc-c++ flex bison make git&lt;br /&gt;
&lt;br /&gt;
Note that you must have gcc 4.6 or later. Any modern distro will have this version, but &amp;quot;stable&amp;quot; distros with very long release cycles, such as Red Hat Enterprise Linux, might not.&lt;br /&gt;
&lt;br /&gt;
==Set Up Own Server==&lt;br /&gt;
&#039;&#039;&#039;Here are the steps to use when creating a new local testing server.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  mkdir ~/tmwAthena&lt;br /&gt;
  cd ~/tmwAthena/&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa.git&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa-server-data.git&lt;br /&gt;
  cd tmwa/&lt;br /&gt;
  ./configure --user # &#039;&#039;(Assuming ~/bin is in your PATH if not use ./configure)&#039;&#039;&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  git config --global url.git@github.com:.pushInsteadOf git://github.com &#039;&#039;{{ref|push}} {{ref|once}}&#039;&#039;&lt;br /&gt;
  cd ../tmwa-server-data&lt;br /&gt;
* Preferably, add the update hooks.&lt;br /&gt;
  ln -s ../../git/hooks/post-merge .git/hooks/&lt;br /&gt;
  ln -s ../../../../git/hooks/post-merge .git/modules/client-data/hooks/ # &#039;&#039;(git 1.7.8 or newer)&#039;&#039;&lt;br /&gt;
  ln -s ../../../git/hooks/post-merge client-data/.git/hooks/ # &#039;&#039;(git 1.7.7 or older)&#039;&#039;&lt;br /&gt;
  make conf&lt;br /&gt;
  cd client-data&lt;br /&gt;
  git checkout master&lt;br /&gt;
  cd music&lt;br /&gt;
  git checkout master&lt;br /&gt;
&lt;br /&gt;
==Hosting Updates==&lt;br /&gt;
TMW makes it easy to generate delta zips out of a repository, once it is initially set up.&lt;br /&gt;
&lt;br /&gt;
It will put them in ~/www/updates/, which may be a symlink to wherever your web server is really serving. Setting up a webserver is not covered here.&lt;br /&gt;
&lt;br /&gt;
Once everything is set up, just run &#039;make updates&#039; from the server-data dir every time client-data changes. It will do nothing if appropriate, generate complete zips the first time, and incremental zips afterwards.&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* You must put news.txt and skeleton resources.xml file (and maybe an empty resources2.txt) in ~/www/updates/ first.&lt;br /&gt;
* Music updates are never added; they should be in the skeleton and updated manually if needed.&lt;br /&gt;
* You definitely want to run one of the analyzer scripts frequently, and remove the old updates.&lt;br /&gt;
&lt;br /&gt;
==Updating the Server==&lt;br /&gt;
&lt;br /&gt;
==  Running and Administrating the Server ==&lt;br /&gt;
&lt;br /&gt;
The TMWAthena is in fact 3 servers:&lt;br /&gt;
* &#039;&#039;&#039;tmwa-login&#039;&#039;&#039; which manages accounts and connection to char server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-char&#039;&#039;&#039; which manages  characters and connects them to the map server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-map&#039;&#039;&#039; which manages game content (maps, monsters, items, scripts...) and their interaction with characters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Start the servers: Open a terminal and run all the local servers. To stop them, either close the terminal or type control-C.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
  ./run-all&lt;br /&gt;
* In a new terminal, Launch &#039;&#039;&#039;tmwa-admin&#039;&#039;&#039; the administration tool, add yourself as an user and make yourself a GM:&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login&lt;br /&gt;
 tmwa-admin&lt;br /&gt;
 add &amp;lt;username&amp;gt; M &amp;lt;password&amp;gt; &lt;br /&gt;
 gm &amp;lt;username&amp;gt; 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; : Be sure that you are running tmwa-admin from within the &amp;quot;login/&amp;quot; directory. Check that the config files are correct: the connection port should be 6901 for tmwa&#039;s configuration, not 6900, which is the hard-coded default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See also:&#039;&#039;&#039; [[GM Commands]]&lt;br /&gt;
&lt;br /&gt;
== Connecting ==&lt;br /&gt;
# Open a command line terminal and run your client pointing to your client data and your local server :&lt;br /&gt;
  manaplus --server localhost --port 6901 -u -d ~/tmwAthena/tmwa-server-data/client-data&lt;br /&gt;
&lt;br /&gt;
If all went well, you are now ready to test new content and participate with development.&lt;br /&gt;
&lt;br /&gt;
== develop new content==&lt;br /&gt;
&#039;&#039;&#039;You are now free to do some changes, first close the client and your servers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Notes for client data changes: 1) commit and push them in the client-data repo 2) commit and push &amp;quot;client-data&amp;quot; when it shows &amp;quot;(new commits)&amp;quot; in your server-data 3) commit and push other server data changes.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Make your modifications (e.g. Change a map) and save them.&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/client-data&#039;&#039;&lt;br /&gt;
  git status&#039;&#039;&lt;br /&gt;
  git add [modified files]&#039;&#039;&lt;br /&gt;
  git commit&#039;&#039;&lt;br /&gt;
  git push&#039;&#039; {{note|push}}&lt;br /&gt;
  cd ..&lt;br /&gt;
  make maps &#039;&#039;(if you changed a map)&#039;&#039;&lt;br /&gt;
  git status&lt;br /&gt;
  git add [modified files]&lt;br /&gt;
  git add client-data (if &#039;&#039;git status&#039;&#039; shows &#039;&#039;(new commits)&#039;&#039;. &#039;&#039;&#039;Don&#039;t do this if you don&#039;t have push access to client-data!&#039;&#039;&#039;)&lt;br /&gt;
  git commit&lt;br /&gt;
  git push {{note|push}}&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
{{note|push}} : a step for those with commit access to the remote repositories.  For others, you don&#039;t need to reconfigure your clone and please make a patch on steps where &#039;&#039;git push&#039;&#039; is suggested.  &lt;br /&gt;
&lt;br /&gt;
{{note|once}} : you only need to do this once, no matter how many times you independently clone the repositories.&lt;br /&gt;
&lt;br /&gt;
  git format-patch -M -C origin/master&lt;br /&gt;
* pastebin the patch(es) and post for review at irc.freenode.net channel: #themanaworld-dev or on our [http://forums.themanaworld.org/viewforum.php?f=18 development forums]. &#039;&#039;&#039;Extensive patches must be posted on the forum as a series of well-formed patches with descriptive commit messages.&#039;&#039;&#039; In particular, later patches should not fix errors introduced in earlier patches, and each patch should form a logically independent part.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; &#039;&#039;&#039;Note :&#039;&#039;&#039; This is kind of outdated; with github it&#039;s often easier to do patches on branches there. see: &#039;&#039;&#039;[[Working With Git]]&#039;&#039;&#039; page&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can also pull the data which has been modified.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data&lt;br /&gt;
 git pull&lt;br /&gt;
* If you haven&#039;t installed the hook, &lt;br /&gt;
 git submodule update --merge  &#039;&#039;at toplevel (for client-data) and in client-data (for music)&#039;&#039;&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See Also:&#039;&#039;&#039; [http://wiki.themanaworld.org/images/3/33/README.mv.txt README.mv.txt] - Documentation on using git submodules, like client-data and tmw-music.&lt;br /&gt;
&lt;br /&gt;
=Making Content=&lt;br /&gt;
==Making Map Content==&lt;br /&gt;
See [[Mapping Tutorial]].&lt;br /&gt;
===Python Converter Tool===&lt;br /&gt;
After editing maps for the client, you need to generate the walkmaps and imports for the server. yhis can be done either by the &#039;&#039;&#039;[[Tiled]]&#039;&#039;&#039; application or by running the python script &#039;&#039;&#039;tmx_converter.py&#039;&#039;&#039; which is located in the &#039;&#039;&#039;tools&#039;&#039;&#039; folder of the &#039;&#039;&#039;Server Data&#039;&#039;&#039; folder.&lt;br /&gt;
(see [[Mapping Tutorial#Creating the WLK files]])&lt;br /&gt;
After that, commit and push the files that the converter edited. Note that, if you do not have push access to the main repository, you should let someone else update the submodule itself.&lt;br /&gt;
&lt;br /&gt;
==Getting Art Content Into The Game==&lt;br /&gt;
* Post [CPT] or [WIP] art on the [http://forums.themanaworld.org/viewforum.php?f=8 graphics development forum].&lt;br /&gt;
* Work with the Art Director and collaborators on getting the art consistent.&lt;br /&gt;
* When finished, edit topic as [FND].&lt;br /&gt;
* Art Director approves [FND] art and marks it [RC].  Should the art need animation or special effect, the Art Director requests xml for it.  If not, the Art Director commits it and marks as [GIT].&lt;br /&gt;
* XML Team reviews or drafts xml related to the art, then commits the .png and .xml.  Topic can be marked as [GIT].&lt;br /&gt;
::* Art content affected: client-data/graphics/sprites then related directory for .png and .xml animation addition.&lt;br /&gt;
* Project developer requests database entry reservations from a General Content Team developer.&lt;br /&gt;
::* Map entry server data affected: resnametable.txt and .wlk files in the data directory, map content files in the npc directory.&lt;br /&gt;
::* Map entry client data affected: .tmx files in the maps directory.&lt;br /&gt;
::* Map entry requires the running of the .tmx converter (aka java converter) before commits can be made.&lt;br /&gt;
::* Art content server data affected: entry made in the item_db.txt, mob_db.txt or mob_skills_db.txt in the db directory.&lt;br /&gt;
::* Art content client data affected: entry added in items.xml, monsters.xml or other identification file.&lt;br /&gt;
&lt;br /&gt;
===Handling General Content Team [REQ]s===&lt;br /&gt;
* General Content Team member adds a [REQ] topic to the graphics development forum.&lt;br /&gt;
* General Content Team member adds the [REQ] topic as a hyperlink under &amp;quot;Required Art&amp;quot; on the [[Art in Development]] page.&lt;br /&gt;
* Art Director attempts to network with other artists to assign the art to an artist.&lt;br /&gt;
&lt;br /&gt;
==Bit Masking==&lt;br /&gt;
Bit Masking helps us reduce our variable count while offering a dynamic method of script writing that is versatile and flexible to both linear and non-linear script writing. &lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/6520164/tester1.txt Bit Masking Test Script]&lt;br /&gt;
&lt;br /&gt;
==Generating client updates==&lt;br /&gt;
* Shutdown all your servers.&lt;br /&gt;
&lt;br /&gt;
* First we are going to check the config files to be sure the paths are correct.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 add-git-attributes  edit-all-to-export-tilesets.sh  formatXML.sh  list-tileset-order  map-db.py       minimap-render.py&lt;br /&gt;
 adler32             edit-map-tileset-names.sh       indent.xsl    make-updates        map-diff.py&lt;br /&gt;
 End of output &lt;br /&gt;
&lt;br /&gt;
* The easiest solution is to create a symbolic link to that directory &lt;br /&gt;
ln -s /var/www/tmwupdates ~/www/updates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
* You can Edit the make-updates file with gedit or nano or vi.&lt;br /&gt;
Search for the folowing lines:&lt;br /&gt;
output=~/www/updates&lt;br /&gt;
And change them to:&lt;br /&gt;
output=/var/www/tmwupdates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login/conf&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 ladmin_athena.conf         lan_support.conf   login_local.conf.example &lt;br /&gt;
 ladmin_local.conf          login_athena.conf &lt;br /&gt;
 ladmin_local.conf.example  login_local.conf &lt;br /&gt;
 End of output&lt;br /&gt;
&lt;br /&gt;
*Edit the login_local.conf with an editor and look for the following line:&lt;br /&gt;
 update_host: http://updates.themanaworld.org/&lt;br /&gt;
*Change that line to:&lt;br /&gt;
 update_host: http://127.0.0.1/tmwupdates/ (or use your external ip)&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 &lt;br /&gt;
* Open a terminal. &lt;br /&gt;
First we compile the adler32 tool to generate a hash.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/adler32/ &lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 Output must be: &lt;br /&gt;
 gcc -lz -o adler32 adler32.c&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
* Now that we compiled the adler tool we can make us a update.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;br /&gt;
&lt;br /&gt;
* Each time you want to make new updates&lt;br /&gt;
 make sure you have a new commit then&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Friendly_Bots&amp;diff=30405</id>
		<title>Friendly Bots</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Friendly_Bots&amp;diff=30405"/>
		<updated>2014-05-03T01:06:34Z</updated>

		<summary type="html">&lt;p&gt;O11c: mark AuctionBot and Confused Tree] as inactive; update contact info for guild&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bots (robots) are characters that are managed by special clients that allow them to perform automatic operations. Generally speaking, &#039;&#039;&#039;bots are not allowed&#039;&#039;&#039;. Under special circumstances, it&#039;s possible (but not common) to run a friendly bot that is fun or useful to players. Friendly bots must be authorized by The Mana World Committee before they may connect to the server. Like TMW, friendly bots should be free software.&lt;br /&gt;
&lt;br /&gt;
==List of active authorized bots==&lt;br /&gt;
&lt;br /&gt;
* [[ManaMarket]]&lt;br /&gt;
:Stands in the [[General Store]] in [[Hurnscald]]. Allows players to purchase items added by other players for sale.&lt;br /&gt;
* [[guild]]&lt;br /&gt;
:Sits in the theatre. It is used as a substitute for the missing guild support. In order to use it you have to be invited to an existing [[Player Groups|player group or guild]] who has its own channel. When you want to create  your own group, ask any GM for more information. This bot  was brought to TMW courtesy of [[Player Groups#Phoenix Council|The Phoenix Council]] and written by Jero.&lt;br /&gt;
&lt;br /&gt;
==List of inactive authorized bots==&lt;br /&gt;
&lt;br /&gt;
* [[Tradebot]]&lt;br /&gt;
:Stood in the General Store in [[Hurnscald]]. It allowed players to purchase items added by other players for sale.&lt;br /&gt;
* [[AuctionBot]]&lt;br /&gt;
:Stood in the General Store in [[Hurnscald]]. It was designed to be as fair as possible, and offered nice options to players.&lt;br /&gt;
* [[Confused Tree]]&lt;br /&gt;
:Stood in Hurnscald responding to certain words or smilies with smilies or words.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Forks&amp;diff=30229</id>
		<title>Forks</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Forks&amp;diff=30229"/>
		<updated>2014-04-24T21:32:38Z</updated>

		<summary type="html">&lt;p&gt;O11c: Remove some forks with dead links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
Prerequisite for being listed on this page is having a server which is/was publicly playable, but incompatible with the original TMW client (compatible servers are listed on the &amp;quot;Servers&amp;quot; page) and releasing a modified version of the TMW client software under the terms of the GNU GPL (this means making the source code available!).&lt;br /&gt;
&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
The open source nature of The Mana World (TMW) allows anyone to use it as a base for creating their own game. A lot of teams have made use of this opportunity to develop their own games. Projects listed on this page &#039;&#039;&#039;do not&#039;&#039;&#039; work with the official client. Projects that &#039;&#039;&#039;work&#039;&#039;&#039; with the official client are listed in the [[Servers]].&lt;br /&gt;
&lt;br /&gt;
==Active forks==&lt;br /&gt;
These are projects which are still in active development.&lt;br /&gt;
&lt;br /&gt;
===Evol Online===&lt;br /&gt;
Evol Online is a free and open source 2D MMORPG set inside a fantasy world. &lt;br /&gt;
The main purpose of the games developers is to make the game evolve by adding new content regularly and making the game more complex and more enjoyable for the players.&lt;br /&gt;
&lt;br /&gt;
* http://www.evolonline.org/&lt;br /&gt;
&lt;br /&gt;
==Inactive forks==&lt;br /&gt;
These are projects which are unfortunately, not in active development anymore.&lt;br /&gt;
&lt;br /&gt;
===Aethyra===&lt;br /&gt;
A fork of TMW based on the eAthena branch with most of its contents from the original TMW, and plenty of custom content.&lt;br /&gt;
&lt;br /&gt;
* http://www.aethyraproject.org&lt;br /&gt;
===Sirus Online===&lt;br /&gt;
An eAthena-based branch formed by people frustrated with the management of Endless Online. It had a good start until most of its players and some developers prefer to play and develop the original TMW.&lt;br /&gt;
&lt;br /&gt;
===Damasca===&lt;br /&gt;
A project very similar in scope to TMW, although programmed in C# instead of C++. When the development slowed down due to insufficient manpower, developers attempted to rescue the project by using TMWserv and the TMW client, which were already too developed. Unfortunately, it did not turn out so well.&lt;br /&gt;
&lt;br /&gt;
* http://www.damasca.net&lt;br /&gt;
&lt;br /&gt;
[[Category:Forks]]&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Reference&amp;diff=30219</id>
		<title>Classic:TmwAthena Scripting Reference</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Reference&amp;diff=30219"/>
		<updated>2014-04-23T15:36:36Z</updated>

		<summary type="html">&lt;p&gt;O11c: update list of commands to what the server currently has&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a reference for commands believed to work in the eAthena scripting language still used by tmwAthena.&lt;br /&gt;
&lt;br /&gt;
A number of problematic commands have been removed from this list, but not all commands have been tested.&lt;br /&gt;
&lt;br /&gt;
== Language Commands ==&lt;br /&gt;
These are command that are closely tied to the language itself.&lt;br /&gt;
&lt;br /&gt;
=== goto ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    goto L_1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unconditionally jump to a label. Often used in an &amp;quot;if&amp;quot; body.&lt;br /&gt;
&lt;br /&gt;
=== callsub ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    callsub S_labelname, arguments...;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jump to the given label. When the &amp;quot;return&amp;quot; statement is executed, continue on the next line.&lt;br /&gt;
&lt;br /&gt;
It is not known whether &amp;quot;arguments...&amp;quot; works, we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
It might also be possible to use this as a function, if the form of return with a value is used, but we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
=== callfunc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    callfunc &amp;quot;function_name&amp;quot;, arguments...;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jump to the given function script. When the &amp;quot;return&amp;quot; statement is executed, continue on the next line of this script.&lt;br /&gt;
&lt;br /&gt;
It is not known whether &amp;quot;arguments...&amp;quot; works, we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
It might also be possible to use this as a function, if the form of return with a value is used, but we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;return&amp;quot; is broken if this is used from within an if(). If you need a conditional callfunc, first goto a label.&lt;br /&gt;
&lt;br /&gt;
=== return ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    return;&lt;br /&gt;
    return expr;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return from this script or sublabel to the calling function.&lt;br /&gt;
&lt;br /&gt;
It is unknown what happens if this is used from the top-level script, use &amp;quot;close&amp;quot; or &amp;quot;end&amp;quot; instead.&lt;br /&gt;
&lt;br /&gt;
We use temporary variables instead of the form that returns an expression.&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set variable, expression;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Very common command, to set variables.&lt;br /&gt;
&lt;br /&gt;
=== setarray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setarray arrayvariable, val1, val2, ...;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set elements of an array. Previous elements are not cleared. At most 128 elements can be assigned.&lt;br /&gt;
&lt;br /&gt;
It is currently possible, but deprecated, to specify a (zero-based) array index to start at the given part of an array. It&#039;s pretty amazing that that code works anyway.&lt;br /&gt;
&lt;br /&gt;
Remember that there are no permanent arrays, only temporary.&lt;br /&gt;
&lt;br /&gt;
=== cleararray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    cleararray variable, value, count;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fill an array with &amp;quot;count&amp;quot; copies of &amp;quot;value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== getarraysize ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getarraysize variable;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get the size of an array.&lt;br /&gt;
&lt;br /&gt;
The size of an array is simply one more than the index of the last nonzero integer or nonempty string.&lt;br /&gt;
&lt;br /&gt;
WARNING: most functions that set an array do not bother to clear out high indices. You should almost always use an explicitly-provided size instead.&lt;br /&gt;
&lt;br /&gt;
=== getelementofarray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getelementofarray(arrayname, index_expr)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function is invoked internally by the arrayname[index_expr] syntax.&lt;br /&gt;
&lt;br /&gt;
=== if ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    if (condition) condition_command [conditional_command_args, ...];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If condition is zero, do nothing. Else, evaluate the conditional command.&lt;br /&gt;
&lt;br /&gt;
The only thing special about the if command is the lack of commas during parsing (from my reading this is only a warning?). During execution it is perfectly normal.&lt;br /&gt;
&lt;br /&gt;
Note: you must not use a callsub or callfunc as conditional_command.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    end;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop executing the script.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use this if you have opened a dialog to the player, use &amp;quot;close&amp;quot; instead. Or, use &amp;quot;close2&amp;quot; and *then* &amp;quot;end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== debugmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    debugmes &amp;quot;string&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Print a message to stdout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Message Commands ==&lt;br /&gt;
These are commands for dialog or one-way chat with players.&lt;br /&gt;
&lt;br /&gt;
=== mes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mes &amp;quot;string&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a line of text to the player. If a dialog box is not already open for the attached NPC, one will be created.&lt;br /&gt;
&lt;br /&gt;
It is unknown if the client properly supports dialog with multiple NPCs simultaneously. Note that the server only allows each account one paused script at a time, so it probably wouldn&#039;t work anyway.&lt;br /&gt;
&lt;br /&gt;
If you need to include the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; character inside the message, (especially for dialogs) insert it as &#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
When doing several messages without a next; in between, there should be only a single \&amp;quot; at the beginning and the end each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;:&lt;br /&gt;
 mes &amp;quot;[Me Myself]&amp;quot;;&lt;br /&gt;
 mes &amp;quot;&amp;quot;;&lt;br /&gt;
 mes &amp;quot;(I clear my throat)&amp;quot;&lt;br /&gt;
 mes &amp;quot;&amp;quot;;&lt;br /&gt;
 mes &amp;quot;\&amp;quot;I start talking here, and don&#039;t close the quotation marks, because I&#039;m not yet done talking.&amp;quot;;&lt;br /&gt;
 mes &amp;quot;And start a new line, but without new quotation marks.&amp;quot;;&lt;br /&gt;
 mes &amp;quot;Here I stop talking, so I close the quotation marks.\&amp;quot;&amp;quot;;&lt;br /&gt;
gives:&lt;br /&gt;
[Me Myself]&lt;br /&gt;
&lt;br /&gt;
(I clear my throat)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I start talking here, and don&#039;t close the quotation marks, because I&#039;m not yet done talking.&amp;lt;br&amp;gt;&lt;br /&gt;
And start a new line, but without new quotation marks.&amp;lt;br&amp;gt;&lt;br /&gt;
Here I stop talking, so I close the quotation marks.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== next ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    next;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop the script until the user presses &amp;quot;Next&amp;quot; in the dialog.&lt;br /&gt;
&lt;br /&gt;
=== close ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    close;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop executing the script and give the user a &amp;quot;Close&amp;quot; button in the dialog.&lt;br /&gt;
&lt;br /&gt;
=== close2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    close2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop the script until the user presses the &amp;quot;Close&amp;quot; button in the dialog, then keep executing the script.&lt;br /&gt;
&lt;br /&gt;
WARNING: unlike close, this command is a blocking command, the usual caveats apply.&lt;br /&gt;
&lt;br /&gt;
=== menu ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    menu&lt;br /&gt;
        &amp;quot;option 1&amp;quot;, L_1,&lt;br /&gt;
        &amp;quot;option 2&amp;quot;, L_2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a list of choices to the player, then branch to the specified label.&lt;br /&gt;
&lt;br /&gt;
Additionally, the temporary variable &amp;quot;@menu&amp;quot; is set to the 1-based index of the choice.&lt;br /&gt;
&lt;br /&gt;
The options must not contain the character &amp;quot;:&amp;quot;, as the protocol uses it as a separator.&lt;br /&gt;
&lt;br /&gt;
=== input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    input variable_name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Input an integer or string to the given variable, depending on whether has the &#039;$&#039; string postfix.&lt;br /&gt;
&lt;br /&gt;
The implementation allows variable_name to be omitted if input is an integer, in case l14 is used. Don&#039;t use this.&lt;br /&gt;
&lt;br /&gt;
=== announce ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    announce &amp;quot;message&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do a GM message.&lt;br /&gt;
&lt;br /&gt;
If flag &amp;amp; 0xF == 0 forward it to all map servers.&lt;br /&gt;
If flag &amp;amp; 0x8, message is from the OID (NPC? usually?) rather than the RID (player).&lt;br /&gt;
&lt;br /&gt;
If (flag &amp;amp; 0x7) == 1, send to all on map.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 2, send to all in line of sight.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 3, send to self only.&lt;br /&gt;
If (flag &amp;amp; 0x7) == anything else, send to all clients.&lt;br /&gt;
&lt;br /&gt;
=== mapannounce ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mapannounce &amp;quot;mapname&amp;quot;, &amp;quot;message&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Send an announcement to all players in map.&lt;br /&gt;
&lt;br /&gt;
Only flag &amp;amp; 0x10 is interpreted, which does not work with the Mana client. So, flag must be 0.&lt;br /&gt;
&lt;br /&gt;
=== message ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    message &amp;quot;player&amp;quot;, &amp;quot;message&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display (in chat) a message from the server to a single user.&lt;br /&gt;
&lt;br /&gt;
=== npctalk ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    npctalk &amp;quot;message&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Make an NPC say something publicly.&lt;br /&gt;
&lt;br /&gt;
Note: in many cases areaannounce is a better choice.&lt;br /&gt;
&lt;br /&gt;
== Character Commands ==&lt;br /&gt;
These have to do with attributes of the player.&lt;br /&gt;
&lt;br /&gt;
=== setlook ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setlook type, value;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set an aspect of a character&#039;s appearance. Used e.g. by the barber.&lt;br /&gt;
&lt;br /&gt;
There are constant provided for the LOOK type, and for hair color and hair style.&lt;br /&gt;
&lt;br /&gt;
=== heal ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    heal hp, sp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase or decrease the player&#039;s hp and sp.&lt;br /&gt;
&lt;br /&gt;
=== itemheal ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    itemheal &amp;quot;ii&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase or decrease the player&#039;s hp and sp, for use in item scripts.&lt;br /&gt;
&lt;br /&gt;
=== percentheal ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    percentheal &amp;quot;ii&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase or decrease the player&#039;s hp and sp, by percentage of max HP.&lt;br /&gt;
&lt;br /&gt;
This is probably the best way to instakill the player.&lt;br /&gt;
&lt;br /&gt;
=== readparam ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    readparam(type[, &amp;quot;playername&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return one of the core parameters of a player.&lt;br /&gt;
&lt;br /&gt;
type is one of the bCamelCase constants, see db/const.txt&lt;br /&gt;
&lt;br /&gt;
=== getcharid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getcharid(type[ &amp;quot;playername&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get an id of the attached (or given) player.&lt;br /&gt;
&lt;br /&gt;
Type is:&lt;br /&gt;
0: char id&lt;br /&gt;
1: party id&lt;br /&gt;
2: guild id (deprecated)&lt;br /&gt;
3: account id&lt;br /&gt;
&lt;br /&gt;
You usually want 3.&lt;br /&gt;
&lt;br /&gt;
=== strcharinfo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    strcharinfo(num)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return string information about an account:&lt;br /&gt;
num==0: name&lt;br /&gt;
num==1: party name&lt;br /&gt;
num==2: guild name (deprecated)&lt;br /&gt;
&lt;br /&gt;
=== sc_start ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sc_start type, tick, val1[, beingid];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply a status effect to a player (or monster?).&lt;br /&gt;
&lt;br /&gt;
type is one of the sc_* constants.&lt;br /&gt;
&lt;br /&gt;
=== sc_end ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sc_end type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Immediately end status effect on current player.&lt;br /&gt;
&lt;br /&gt;
=== sc_check ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sc_check(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Whether a status effect is currently active.&lt;br /&gt;
&lt;br /&gt;
=== resetstatus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    resetstatus;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== changesex ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    changesex;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ask the login server (via the char server) to toggle this account&#039;s sex, then kick the player.&lt;br /&gt;
&lt;br /&gt;
=== attachrid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    attachrid(id)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change the being associated with this script.&lt;br /&gt;
&lt;br /&gt;
Return true if such a player is logged in.&lt;br /&gt;
&lt;br /&gt;
=== detachrid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    detachrid;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Detach the player associated with this script.&lt;br /&gt;
&lt;br /&gt;
=== isloggedin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isloggedin(id)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return true if the given ID is logged in.&lt;br /&gt;
&lt;br /&gt;
Often you shouldn&#039;t use this, but attachrid(id) instead&lt;br /&gt;
&lt;br /&gt;
=== marriage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    marriage(&amp;quot;otherplayer&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Marry the attached player to the other player.&lt;br /&gt;
&lt;br /&gt;
Return 1 on success and 0 on failure.&lt;br /&gt;
&lt;br /&gt;
=== divorce ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    divorce()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Divorce the attached player from their partner&lt;br /&gt;
&lt;br /&gt;
Return 1 on success and 0 on failure.&lt;br /&gt;
&lt;br /&gt;
=== getpartnerid2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getpartnerid2()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the ID of the attached player&#039;s partner (0 is none).&lt;br /&gt;
&lt;br /&gt;
=== getexp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getexp base, job;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase the types of experience.&lt;br /&gt;
&lt;br /&gt;
=== getinventorylist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getinventorylist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fill in some arrays of useful information: &amp;quot;@inventorylist_id&amp;quot;, &amp;quot;@inventorylist_amount&amp;quot;, &amp;quot;@inventorylist_equip&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The arrays are not cleared between calls, use &amp;quot;@inventory_count&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== getactivatedpoolskilllist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getactivatedpoolskilllist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Same, but only activated pool skills.&lt;br /&gt;
&lt;br /&gt;
=== getunactivatedpoolskilllist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getunactivatedpoolskilllist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Same, but only unactivated pool skills.&lt;br /&gt;
&lt;br /&gt;
=== poolskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    poolskill skill_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Activate a poolable skill.&lt;br /&gt;
&lt;br /&gt;
=== unpoolskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    unpoolskill skill_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Deactivate a poolable skill.&lt;br /&gt;
&lt;br /&gt;
=== misceffect ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    misceffect type, &amp;quot;player_name&amp;quot;;&lt;br /&gt;
    misceffect type, being_id;&lt;br /&gt;
    misceffect type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a miscellaneous effect on a being.&lt;br /&gt;
&lt;br /&gt;
In the third form, it will use the OID if possible, and fallback to the RID.&lt;br /&gt;
&lt;br /&gt;
=== getlook ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getlook(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return part of the player&#039;s appearance:&lt;br /&gt;
val==1: hair&lt;br /&gt;
val==2: weapon&lt;br /&gt;
val==3: bottom&lt;br /&gt;
val==4: middle&lt;br /&gt;
val==5: top&lt;br /&gt;
val==6: hair color&lt;br /&gt;
val==8: shield&lt;br /&gt;
val==9: shoes&lt;br /&gt;
&lt;br /&gt;
On failure, return -1.&lt;br /&gt;
&lt;br /&gt;
=== getsavepoint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getsavepoint(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
type==0: Return savepoint map&lt;br /&gt;
type==1: Return savepoint x&lt;br /&gt;
type==2: Return savepoint y&lt;br /&gt;
&lt;br /&gt;
This is believed to be the only function (other than callfunc and callsub of course) that returns a different type depending on its arguments.&lt;br /&gt;
&lt;br /&gt;
=== shop ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    shop &amp;quot;npcname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Close the script and open the given NPC&#039;s shop.&lt;br /&gt;
&lt;br /&gt;
=== isdead ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isdead()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 1 if the attached player is dead, else 0.&lt;br /&gt;
&lt;br /&gt;
=== fakenpcname ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fakenpcname &amp;quot;name&amp;quot;, &amp;quot;newname&amp;quot;, new_sprite_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change the appearance of an NPC.&lt;br /&gt;
&lt;br /&gt;
== Location Commands ==&lt;br /&gt;
These are commands that have to do with the location of players&lt;br /&gt;
&lt;br /&gt;
=== warp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    warp &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Warp the attached player to the given location. &amp;quot;mapname&amp;quot; may have the special values &amp;quot;Random&amp;quot;, &amp;quot;SavePoint&amp;quot;, and &amp;quot;Save&amp;quot; (case-sensitive), but x and y are still required.&lt;br /&gt;
&lt;br /&gt;
=== isat ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isat(&amp;quot;mapname&amp;quot;, x, y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 1 if the attached player is at the given location, 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
=== areawarp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    areawarp &amp;quot;src_map&amp;quot;, x0, y0, x1, y1, &amp;quot;dst_map&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Warp all players in the given area to the given location.&lt;br /&gt;
&lt;br /&gt;
=== getusers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getusers(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count users.&lt;br /&gt;
&lt;br /&gt;
If flag &amp;amp; 0x8, base on OID instead of RID.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 0, return users on the map.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 1, return users on the server.&lt;br /&gt;
&lt;br /&gt;
=== getmapusers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getmapusers(&amp;quot;mapname&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count users on a given map.&lt;br /&gt;
&lt;br /&gt;
=== getareausers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getareausers(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1, z)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count users in an area.&lt;br /&gt;
z can be set to 1 or be left out to check for players who are alive.&lt;br /&gt;
&lt;br /&gt;
=== mapwarp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mapwarp &amp;quot;src_map&amp;quot;, &amp;quot;dst_map&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Warp all players from source map to destination location.&lt;br /&gt;
&lt;br /&gt;
=== npcwarp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    npcwarp x, y, &amp;quot;npcname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Move an NPC to a different location on the same map.&lt;br /&gt;
&lt;br /&gt;
=== isin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isin(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Check if the player is in the area.&lt;br /&gt;
&lt;br /&gt;
=== getx ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getx()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return attached player&#039;s x coordinate.&lt;br /&gt;
&lt;br /&gt;
=== gety ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gety()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return attached player&#039;s y coordinate.&lt;br /&gt;
&lt;br /&gt;
=== getmap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getmap()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return attached player&#039;s current map.&lt;br /&gt;
&lt;br /&gt;
== Item Commands ==&lt;br /&gt;
These have to do with items or inventory.&lt;br /&gt;
&lt;br /&gt;
=== getitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getitem &amp;quot;itemname&amp;quot;, count[, unused_argument[, playerid]];&lt;br /&gt;
    getitem itemid, count[, unused_argument[, playerid]];&lt;br /&gt;
&amp;quot;ii**&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grant the attached player (or the given player) &amp;quot;count&amp;quot; copies of an item.&lt;br /&gt;
&lt;br /&gt;
If itemname is unrecognized you get an iten (727) instead.&lt;br /&gt;
&lt;br /&gt;
;Warning:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    delitem: only deletes one item if applied to not-stackable item (equipment)&lt;br /&gt;
    getitem: gives item stacked, even if it&#039;s equipment&lt;br /&gt;
    fix: use a loop and only delete/give one item at a time&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== makeitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    makeitem &amp;quot;itemname&amp;quot;, count, &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
    makeitem itemid, count, &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Drop items on the ground.&lt;br /&gt;
&lt;br /&gt;
The special &amp;quot;mapname&amp;quot; value &amp;quot;this&amp;quot; means the map of the attached player.&lt;br /&gt;
&lt;br /&gt;
=== delitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    delitem &amp;quot;itemname&amp;quot;, count;&lt;br /&gt;
    delitem itemid, count;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove items from the attached player&#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
This command is buggy if the player does not have enough of the item. And if the item is not stackable, the command will delete only one of them, even if a higher number is specified.&lt;br /&gt;
;Warning:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    delitem: only deletes one item if applied to not-stackable item (equipment)&lt;br /&gt;
    getitem: gives item stacked, even if it&#039;s equipment&lt;br /&gt;
    fix: use a loop and only delete/give one item at a time&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== countitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    countitem(&amp;quot;itemname&amp;quot;)&lt;br /&gt;
    countitem(itemid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the number of the given item in the player&#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
=== checkweight ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    checkweight(&amp;quot;itemname&amp;quot;, count)&lt;br /&gt;
    checkweight(itemid, count)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 0 if adding &amp;quot;count&amp;quot; of the item would put player above max weight, 1 if it would still be less than max weight.&lt;br /&gt;
Also returns 0 if item does not exist.&lt;br /&gt;
&lt;br /&gt;
=== getequipid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getequipid(equip_point)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the ID of the item in the given equip slot.&lt;br /&gt;
&lt;br /&gt;
equip_point is one of the equip_* constants&lt;br /&gt;
&lt;br /&gt;
=== getequipname ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getequipname(equip_point)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the name of the item in the given equip slot.&lt;br /&gt;
&lt;br /&gt;
equip_point is one of the equip_* constants&lt;br /&gt;
&lt;br /&gt;
=== statusup2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    statusup2 bType, delta;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Permanently increase or decrease a stat.&lt;br /&gt;
&lt;br /&gt;
=== bonus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    bonus bType, delta&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Temporarily increase a stat. For use in item scripts only.&lt;br /&gt;
&lt;br /&gt;
=== skill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    skill id, level[, flag = 1];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grant a skill.&lt;br /&gt;
&lt;br /&gt;
flag==0: permanent skill&lt;br /&gt;
flag==1: temporary skill (item scripts only)&lt;br /&gt;
&lt;br /&gt;
(Untested)&lt;br /&gt;
&lt;br /&gt;
=== setskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setskill id, level;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grant a skill permanently.&lt;br /&gt;
&lt;br /&gt;
=== getskilllv ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getskilllv(skill)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the player&#039;s level of the given skill.&lt;br /&gt;
&lt;br /&gt;
=== getgmlevel ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getgmlevel()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the player&#039;s GM level.&lt;br /&gt;
&lt;br /&gt;
=== getopt2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getopt2()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the player&#039;s opt2 flags.&lt;br /&gt;
&lt;br /&gt;
=== setopt2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setopt2 flags;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the player&#039;s opt2 flags.&lt;br /&gt;
&lt;br /&gt;
=== savepoint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    savepoint &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the player&#039;s save point. Used e.g. by Soul Menhirs, and during the time travel quest.&amp;lt;!-- Don&#039;t remove this just because you can&#039;t figure out how to start it from this end. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openstorage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    openstorage;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Open the player&#039;s storage.&lt;br /&gt;
&lt;br /&gt;
=== getitemname ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getitemname(&amp;quot;itemname&amp;quot;)&lt;br /&gt;
    getitemname(itemid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the name of the item, or &amp;quot;Unknown Item&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== nude ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    nude;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unequip all items.&lt;br /&gt;
&lt;br /&gt;
=== unequipbyid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    unequipbyid slot_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unequip whatever is in the slot&lt;br /&gt;
&lt;br /&gt;
=== getareadropitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getareadropitem(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1, &amp;quot;itemname&amp;quot;[, delitems = 0]);&lt;br /&gt;
    getareadropitem(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1, itemid[, delitems = 0]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count items on the floor in an area. If delitems, the items will be deleted as well.&lt;br /&gt;
&lt;br /&gt;
== Common Functions ==&lt;br /&gt;
These are not mostly not related to the RPG or the scripting language.&lt;br /&gt;
&lt;br /&gt;
=== rand ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    rand(range)&lt;br /&gt;
    rand(min, max)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the first form, return a random number between 0 (inclusive) and range (exclusive). Return 0 if range is not positive.&lt;br /&gt;
In the second form, return a random number between min and max, inclusive. Min and max may be swapped.&lt;br /&gt;
&lt;br /&gt;
=== gettimetick ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gettimetick(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return one of the ticks&lt;br /&gt;
&lt;br /&gt;
type==0 (or other): milliseconds since some point in time, wraps every 50 days.&lt;br /&gt;
type==1: time since midnight, UTC.&lt;br /&gt;
type==2: seconds since the epoch.&lt;br /&gt;
&lt;br /&gt;
You should almost always use type 2.&lt;br /&gt;
&lt;br /&gt;
=== gettime ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gettime(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get a component of the time (UTC).&lt;br /&gt;
&lt;br /&gt;
1: second (0-59)&lt;br /&gt;
2: minute (0-59)&lt;br /&gt;
3: hour (0-23)&lt;br /&gt;
4: day of week (0-6)&lt;br /&gt;
5: day of month (1-31)&lt;br /&gt;
6: month (1-12)&lt;br /&gt;
7: year (1902-2038)&lt;br /&gt;
&lt;br /&gt;
== Timers and Events ==&lt;br /&gt;
These have to do with transfering control in ways that are not immediately obvious.&lt;br /&gt;
&lt;br /&gt;
The most common ones are initnpctimer or startnpctimer, stopnpctimer, and setnpctimer.&lt;br /&gt;
&lt;br /&gt;
=== donpcevent ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    donpcevent &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manually invoke an NPC event.&lt;br /&gt;
&lt;br /&gt;
=== addtimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    addtimer tick, &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Invoke an NPC event after a delay, for the attached NPC.&lt;br /&gt;
&lt;br /&gt;
This command does the same thing as areatimer, but for only the attached player.&lt;br /&gt;
&lt;br /&gt;
=== initnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    initnpctimer;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the NPC&#039;s attached timer to tick 0 and start it.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to setnpctimer, 0; startnpctimer;&lt;br /&gt;
&lt;br /&gt;
=== stopnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    stopnpctimer;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop the NPC&#039;s attached timer.&lt;br /&gt;
&lt;br /&gt;
This DOES NOT do anything about the tick. But that&#039;s okay, you should normally be starting it with initnpctimer.&lt;br /&gt;
&lt;br /&gt;
=== startnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    startnpctimer;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Start the NPC&#039;s attached timer, without setting the tick.&lt;br /&gt;
&lt;br /&gt;
=== setnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setnpctimer tick;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the NPC&#039;s timer to a specific tick. Generally, this is only useful for tick 0.&lt;br /&gt;
&lt;br /&gt;
=== getnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getnpctimer(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get the current tick of an NPC&#039;s timer.&lt;br /&gt;
&lt;br /&gt;
type==0: timer event tick (like setnpctimer)&lt;br /&gt;
type==1: bool if it has a next timer.&lt;br /&gt;
type==2: timer amount&lt;br /&gt;
&lt;br /&gt;
=== cmdothernpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    cmdothernpc &amp;quot;npc&amp;quot;, &amp;quot;Foo&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Invoke ::OnCommandFoo&lt;br /&gt;
&lt;br /&gt;
=== mobcount ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mobcount(&amp;quot;mapname&amp;quot;, &amp;quot;event&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count the remaining mobs from the spawn with the given event. Has an offset of -1.&lt;br /&gt;
&lt;br /&gt;
=== areatimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    areatimer &amp;quot;mapname&amp;quot;, x0, y0, x1, y1, tick, &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add a PC event timer to all players in the area.&lt;br /&gt;
&lt;br /&gt;
After &amp;quot;tick&amp;quot; milliseconds, the given NPC event will fire with each player as the RID.&lt;br /&gt;
&lt;br /&gt;
== Unsorted Commands ==&lt;br /&gt;
These are commands that still need sorting, please edit this page, see talk page for category (and subcategory?) suggestions.&lt;br /&gt;
&lt;br /&gt;
=== monster ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    monster &amp;quot;mapname&amp;quot;, x, y, &amp;quot;string&amp;quot;, class, count[, &amp;quot;event&amp;quot;];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spawn monsters at a point. If you define an OnDead event using a trigger area then the event is shot only inside that area, hence the event is ignored when the monster is killed outside the trigger area.&lt;br /&gt;
&lt;br /&gt;
=== areamonster ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    areamonster &amp;quot;mapname&amp;quot;, x0, y0, x1, y1, &amp;quot;string&amp;quot;, class, count[, &amp;quot;event&amp;quot;];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spawn monsters in an area. If you define an OnDead event using a trigger area then the event is shot only inside that area, hence the event is ignored when the monster is killed outside the trigger area.&lt;br /&gt;
&lt;br /&gt;
=== killmonster ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    killmonster &amp;quot;mapname&amp;quot;, &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kill monsters on a map.&lt;br /&gt;
&lt;br /&gt;
Unless it is &amp;quot;All&amp;quot;, &amp;quot;event&amp;quot; must match the one used at spawn time.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;All&amp;quot; is given, this function properly preserves permanently respawning monsters.&lt;br /&gt;
&lt;br /&gt;
=== killmonsterall ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    killmonsterall &amp;quot;mapname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kill all monsters unconditionally.&lt;br /&gt;
&lt;br /&gt;
This command might prevent monsters from respawning. Instead use &amp;quot;killmonster&amp;quot; with &amp;quot;event&amp;quot; == &amp;quot;All&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== enablenpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    enablenpc &amp;quot;name&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enable an NPC.&lt;br /&gt;
&lt;br /&gt;
=== disablenpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    disablenpc &amp;quot;name&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Disable an NPC.&lt;br /&gt;
&lt;br /&gt;
=== setmapflag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setmapflag &amp;quot;mapname&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set an arbitrary mapflag.&lt;br /&gt;
&lt;br /&gt;
=== removemapflag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    removemapflag &amp;quot;mapname&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unset an arbitrary mapflag.&lt;br /&gt;
&lt;br /&gt;
=== getmapflag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getmapflag(&amp;quot;mapname&amp;quot;, flag);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Check an arbitrary mapflag.&lt;br /&gt;
&lt;br /&gt;
=== pvpon ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    pvpon &amp;quot;mapname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Allow PvP on a map.&lt;br /&gt;
&lt;br /&gt;
=== pvpoff ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    pvpoff &amp;quot;mapname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Deny PvP on a map.&lt;br /&gt;
&lt;br /&gt;
=== emotion ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    emotion emote_index;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Show a smiley above the OID.&lt;br /&gt;
&lt;br /&gt;
=== getspellinvocation ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getspellinvocation(&amp;quot;spell-identifier&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the #invocation used for a spell, or &amp;quot;...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== specialeffect ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    specialeffect type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a special effect on the OID.&lt;br /&gt;
&lt;br /&gt;
Same as &amp;quot;misceffect&amp;quot;, but does not fallback when there is no OID.&lt;br /&gt;
&lt;br /&gt;
=== specialeffect2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    specialeffect2 type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Same as &amp;quot;misceffect&amp;quot;, but works when there is an OID.&lt;br /&gt;
&lt;br /&gt;
=== gmcommand ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gmcommand &amp;quot;@command maybe with arguments&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run a GM command, at level 99.&lt;br /&gt;
&lt;br /&gt;
== Undocumented Commands ==&lt;br /&gt;
pow (deprecated), bonus2, mapexit&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=MediaWiki:Website-url&amp;diff=30171</id>
		<title>MediaWiki:Website-url</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=MediaWiki:Website-url&amp;diff=30171"/>
		<updated>2014-04-22T22:36:56Z</updated>

		<summary type="html">&lt;p&gt;O11c: https&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;https://www.themanaworld.org/&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=MediaWiki:Sidebar&amp;diff=30169</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=MediaWiki:Sidebar&amp;diff=30169"/>
		<updated>2014-04-22T22:22:37Z</updated>

		<summary type="html">&lt;p&gt;O11c: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** Dev:Main|Development&lt;br /&gt;
** website-url|website&lt;br /&gt;
** todo-url|todo&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** Help:Contents|Wiki help&lt;br /&gt;
* Links&lt;br /&gt;
** https://forums.themanaworld.org/|Forum&lt;br /&gt;
** irc://chat.freenode.net/themanaworld|IRC channel&lt;br /&gt;
** https://plus.google.com/114523926767095095371/|Google+&lt;br /&gt;
** http://manaplus.evolonline.org|ManaPlus Client&lt;br /&gt;
** https://trello.com/b/rNnx513z/art-development|Art Trello&lt;br /&gt;
** https://trello.com/b/ojhvZu1f/content-development|Content Trello&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Evets&amp;diff=30163</id>
		<title>User talk:Evets</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Evets&amp;diff=30163"/>
		<updated>2014-04-22T17:32:03Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 17:32, 22 April 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Evets&amp;diff=30162</id>
		<title>User:Evets</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Evets&amp;diff=30162"/>
		<updated>2014-04-22T17:32:02Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I enjoyed playing on The Mana World, and I have an interest in improving upon the project via programming, suggestions, bug reports, editing the wiki, or otherwise. I&#039;ve worked on other personal projects before, but not any relatively large (more than a couple of friends) projects. &lt;br /&gt;
Aside from programming, I&#039;m also experienced in web development, and I&#039;m a dedicated Linux user.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Development:How_to_Develop&amp;diff=30110</id>
		<title>Development:How to Develop</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Development:How_to_Develop&amp;diff=30110"/>
		<updated>2014-04-12T21:30:40Z</updated>

		<summary type="html">&lt;p&gt;O11c: Add Fedora deps&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We&#039;re using Git as version control system for our source files and content. Have a look at our [[Working With Git|Tutorial]] about how to use Git. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Set Up=&lt;br /&gt;
This is a how to help content development for official server (tmwAthena) using Ubuntu and the Mana+ client. Other OS and clients may differ. Following this guide, you should be able to get development testing versions of the client data (tmwa-client-data), server-data (tmwa-server-data) and participate in development by using a localhost server. After getting these, you can both test current development and begin development in the direction you find most fitting.&lt;br /&gt;
&lt;br /&gt;
==Install Dependencies==&lt;br /&gt;
In addition to the basic build tools (GCC, Make, headers, ...), [http://www.gnu.org/software/bison/ &#039;&#039;&#039;Bison&#039;&#039;&#039;], and [http://sourceforge.net/projects/flex/ &#039;&#039;&#039;Flex&#039;&#039;&#039;] are needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [https://www.debian.org/ Debian] derivates (including [http://www.ubuntu.com/ Ubuntu])&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo apt-get install g++ flex bison python make realpath git&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [https://fedoraproject.org/ Fedora] derivates&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo yum install gcc-c++ flex bison make git&lt;br /&gt;
&lt;br /&gt;
Note that you must have gcc 4.6 or later. Any modern distro will have this version, but &amp;quot;stable&amp;quot; distros with very long release cycles, such as Red Hat Enterprise Linux, might not.&lt;br /&gt;
&lt;br /&gt;
==Set Up Own Server==&lt;br /&gt;
&#039;&#039;&#039;Here are the steps to use when creating a new local testing server.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  mkdir ~/tmwAthena&lt;br /&gt;
  cd ~/tmwAthena/&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa.git&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa-server-data.git&lt;br /&gt;
  cd tmwa/&lt;br /&gt;
  ./configure --user # &#039;&#039;(Assuming ~/bin is in your PATH if not use ./configure)&#039;&#039;&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  git config --global url.git@github.com:.pushInsteadOf git://github.com &#039;&#039;{{ref|push}} {{ref|once}}&#039;&#039;&lt;br /&gt;
  cd ../tmwa-server-data&lt;br /&gt;
* Preferably, add the update hooks.&lt;br /&gt;
  ln -s ../../git/hooks/post-merge .git/hooks/&lt;br /&gt;
  ln -s ../../../../git/hooks/post-merge .git/modules/client-data/hooks/ # &#039;&#039;(git 1.7.8 or newer)&#039;&#039;&lt;br /&gt;
  ln -s ../../../git/hooks/post-merge client-data/.git/hooks/ # &#039;&#039;(git 1.7.7 or older)&#039;&#039;&lt;br /&gt;
  make conf&lt;br /&gt;
  cd client-data&lt;br /&gt;
  git checkout master&lt;br /&gt;
  cd music&lt;br /&gt;
  git checkout master&lt;br /&gt;
&lt;br /&gt;
==Hosting Updates==&lt;br /&gt;
TMW makes it easy to generate delta zips out of a repository, once it is initially set up.&lt;br /&gt;
&lt;br /&gt;
It will put them in ~/www/updates/, which may be a symlink to wherever your web server is really serving. Setting up a webserver is not covered here.&lt;br /&gt;
&lt;br /&gt;
Once everything is set up, just run &#039;make updates&#039; from the server-data dir every time client-data changes. It will do nothing if appropriate, generate complete zips the first time, and incremental zips afterwards.&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* You must put news.txt and skeleton resources.xml file (and maybe an empty resources2.txt) in ~/www/updates/ first.&lt;br /&gt;
* Music updates are never added; they should be in the skeleton and updated manually if needed.&lt;br /&gt;
* You definitely want to run one of the analyzer scripts frequently, and remove the old updates.&lt;br /&gt;
&lt;br /&gt;
==Updating the Server==&lt;br /&gt;
&lt;br /&gt;
==  Running and Administrating the Server ==&lt;br /&gt;
&lt;br /&gt;
The TMWAthena is in fact 3 servers:&lt;br /&gt;
* &#039;&#039;&#039;tmwa-login&#039;&#039;&#039; which manages accounts and connection to char server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-char&#039;&#039;&#039; which manages  characters and connects them to the map server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-map&#039;&#039;&#039; which manages game content (maps, monsters, items, scripts...) and their interaction with characters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Start the servers: Open a terminal and run all the local servers. To stop them, either close the terminal or type control-C.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
  ./run-all&lt;br /&gt;
* In a new terminal, Launch &#039;&#039;&#039;tmwa-admin&#039;&#039;&#039; the administration tool, add yourself as an user and make yourself a GM:&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login&lt;br /&gt;
 tmwa-admin&lt;br /&gt;
 add &amp;lt;username&amp;gt; M &amp;lt;password&amp;gt; &lt;br /&gt;
 gm &amp;lt;username&amp;gt; 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; : Be sure that you are running tmwa-admin from within the &amp;quot;login/&amp;quot; directory. Check that the config files are correct: the connection port should be 6901 for tmwa&#039;s configuration, not 6900, which is the hard-coded default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See also:&#039;&#039;&#039; [[GM Commands]]&lt;br /&gt;
&lt;br /&gt;
== Connecting ==&lt;br /&gt;
# Open a command line terminal and run your client pointing to your client data and your local server :&lt;br /&gt;
  manaplus --server localhost --port 6901 -u -d ~/tmwAthena/tmwa-server-data/client-data&lt;br /&gt;
&lt;br /&gt;
If all went well, you are now ready to test new content and participate with development.&lt;br /&gt;
&lt;br /&gt;
== develop new content==&lt;br /&gt;
&#039;&#039;&#039;You are now free to do some changes, first close the client and your servers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Notes for client data changes: 1) commit and push them in the client-data repo 2) commit and push &amp;quot;client-data&amp;quot; when it shows &amp;quot;(new commits)&amp;quot; in your server-data 3) commit and push other server data changes.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Make your modifications (e.g. Change a map) and save them.&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/client-data&#039;&#039;&lt;br /&gt;
  git status&#039;&#039;&lt;br /&gt;
  git add [modified files]&#039;&#039;&lt;br /&gt;
  git commit&#039;&#039;&lt;br /&gt;
  git push&#039;&#039; {{note|push}}&lt;br /&gt;
  cd ..&lt;br /&gt;
  make maps &#039;&#039;(if you changed a map)&#039;&#039;&lt;br /&gt;
  git status&lt;br /&gt;
  git add [modified files]&lt;br /&gt;
  git add client-data (if &#039;&#039;git status&#039;&#039; shows &#039;&#039;(new commits)&#039;&#039;. &#039;&#039;&#039;Don&#039;t do this if you don&#039;t have push access to client-data!&#039;&#039;&#039;)&lt;br /&gt;
  git commit&lt;br /&gt;
  git push {{note|push}}&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
{{note|push}} : a step for those with commit access to the remote repositories.  For others, you don&#039;t need to reconfigure your clone and please make a patch on steps where &#039;&#039;git push&#039;&#039; is suggested.  &lt;br /&gt;
&lt;br /&gt;
{{note|once}} : you only need to do this once, no matter how many times you independently clone the repositories.&lt;br /&gt;
&lt;br /&gt;
  git format-patch -M -C origin/master&lt;br /&gt;
* pastebin the patch(es) and post for review at irc.freenode.net channel: #themanaworld-dev or on our [http://forums.themanaworld.org/viewforum.php?f=18 development forums]. &#039;&#039;&#039;Extensive patches must be posted on the forum as a series of well-formed patches with descriptive commit messages.&#039;&#039;&#039; In particular, later patches should not fix errors introduced in earlier patches, and each patch should form a logically independent part.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; &#039;&#039;&#039;Note :&#039;&#039;&#039; This is kind of outdated; with github it&#039;s often easier to do patches on branches there. see: &#039;&#039;&#039;[[Working With Git]]&#039;&#039;&#039; page&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can also pull the data which has been modified.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data&lt;br /&gt;
 git pull&lt;br /&gt;
* If you haven&#039;t installed the hook, &lt;br /&gt;
 git submodule update --merge  &#039;&#039;at toplevel (for client-data) and in client-data (for music)&#039;&#039;&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See Also:&#039;&#039;&#039; [http://wiki.themanaworld.org/images/3/33/README.mv.txt README.mv.txt] - Documentation on using git submodules, like client-data and tmw-music.&lt;br /&gt;
&lt;br /&gt;
=Making Content=&lt;br /&gt;
==Making Map Content==&lt;br /&gt;
See [[Mapping Tutorial]].&lt;br /&gt;
===Python Converter Tool===&lt;br /&gt;
After editing maps for the client, you need to generate the walkmaps and imports for the server. yhis can be done either by the &#039;&#039;&#039;[[Tiled]]&#039;&#039;&#039; application or by running the python script &#039;&#039;&#039;tmx_converter.py&#039;&#039;&#039; which is located in the &#039;&#039;&#039;tools&#039;&#039;&#039; folder of the &#039;&#039;&#039;Server Data&#039;&#039;&#039; folder.&lt;br /&gt;
(see [[Mapping Tutorial#Creating the WLK files]])&lt;br /&gt;
After that, commit and push the files that the converter edited. Note that, if you do not have push access to the main repository, you should let someone else update the submodule itself.&lt;br /&gt;
&lt;br /&gt;
==Getting Art Content Into The Game==&lt;br /&gt;
* Post [CPT] or [WIP] art on the [http://forums.themanaworld.org/viewforum.php?f=8 graphics development forum].&lt;br /&gt;
* Work with the Art Director and collaborators on getting the art consistent.&lt;br /&gt;
* When finished, edit topic as [FND].&lt;br /&gt;
* Art Director approves [FND] art and marks it [RC].  Should the art need animation or special effect, the Art Director requests xml for it.  If not, the Art Director commits it and marks as [GIT].&lt;br /&gt;
* XML Team reviews or drafts xml related to the art, then commits the .png and .xml.  Topic can be marked as [GIT].&lt;br /&gt;
::* Art content affected: client-data/graphics/sprites then related directory for .png and .xml animation addition.&lt;br /&gt;
* Project developer requests database entry reservations from a General Content Team developer.&lt;br /&gt;
::* Map entry server data affected: resnametable.txt and .wlk files in the data directory, map content files in the npc directory.&lt;br /&gt;
::* Map entry client data affected: .tmx files in the maps directory.&lt;br /&gt;
::* Map entry requires the running of the .tmx converter (aka java converter) before commits can be made.&lt;br /&gt;
::* Art content server data affected: entry made in the item_db.txt, mob_db.txt or mob_skills_db.txt in the db directory.&lt;br /&gt;
::* Art content client data affected: entry added in items.xml, monsters.xml or other identification file.&lt;br /&gt;
&lt;br /&gt;
===Handling General Content Team [REQ]s===&lt;br /&gt;
* General Content Team member adds a [REQ] topic to the graphics development forum.&lt;br /&gt;
* General Content Team member adds the [REQ] topic as a hyperlink under &amp;quot;Required Art&amp;quot; on the [[Art in Development]] page.&lt;br /&gt;
* Art Director attempts to network with other artists to assign the art to an artist.&lt;br /&gt;
&lt;br /&gt;
==Bit Masking==&lt;br /&gt;
Bit Masking helps us reduce our variable count while offering a dynamic method of script writing that is versatile and flexible to both linear and non-linear script writing. &lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/6520164/tester1.txt Bit Masking Test Script]&lt;br /&gt;
&lt;br /&gt;
==Generating client updates==&lt;br /&gt;
* Shutdown all your servers.&lt;br /&gt;
&lt;br /&gt;
* First we are going to check the config files to be sure the paths are correct.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 add-git-attributes  edit-all-to-export-tilesets.sh  formatXML.sh  list-tileset-order  map-db.py       minimap-render.py&lt;br /&gt;
 adler32             edit-map-tileset-names.sh       indent.xsl    make-updates        map-diff.py&lt;br /&gt;
 End of output &lt;br /&gt;
&lt;br /&gt;
* The easiest solution is to create a symbolic link to that directory &lt;br /&gt;
ln -s /var/www/tmwupdates ~/www/updates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
* You can Edit the make-updates file with gedit or nano or vi.&lt;br /&gt;
Search for the folowing lines:&lt;br /&gt;
output=~/www/updates&lt;br /&gt;
And change them to:&lt;br /&gt;
output=/var/www/tmwupdates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login/conf&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 ladmin_athena.conf         lan_support.conf   login_local.conf.example &lt;br /&gt;
 ladmin_local.conf          login_athena.conf &lt;br /&gt;
 ladmin_local.conf.example  login_local.conf &lt;br /&gt;
 End of output&lt;br /&gt;
&lt;br /&gt;
*Edit the login_local.conf with an editor and look for the following line:&lt;br /&gt;
 update_host: http://updates.themanaworld.org/&lt;br /&gt;
*Change that line to:&lt;br /&gt;
 update_host: http://127.0.0.1/tmwupdates/ (or use your external ip)&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 &lt;br /&gt;
* Open a terminal. &lt;br /&gt;
First we compile the adler32 tool to generate a hash.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/adler32/ &lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 Output must be: &lt;br /&gt;
 gcc -lz -o adler32 adler32.c&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
* Now that we compiled the adler tool we can make us a update.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;br /&gt;
&lt;br /&gt;
* Each time you want to make new updates&lt;br /&gt;
 make sure you have a new commit then&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Standards&amp;diff=30095</id>
		<title>Classic:TmwAthena Scripting Standards</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Standards&amp;diff=30095"/>
		<updated>2014-04-10T20:38:37Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* NPC Dialogs */ fix formatting - stupid leading whitespace&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt to standardize the eAthena coding. Any suggestions are welcome to be posted on the discussion page before editing.&lt;br /&gt;
=Code Formatting=&lt;br /&gt;
== Indentation ==&lt;br /&gt;
* Code is indented with four spaces. &lt;br /&gt;
* Code in the same block should have the same indentation. &lt;br /&gt;
* Labels have no indentation. &lt;br /&gt;
* Menu options are on their own lines and are indented further. &lt;br /&gt;
Example:&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;, L_No;&lt;br /&gt;
* When using an if-statement, there should be a line break after the condition and the conditional command should be indented further. An exception to this is a series of if-statements at the beginning of a major code block which use gotos to jump to the correct position in the script. In this case the goto should be in the same line as the if-statement.&lt;br /&gt;
Example:&lt;br /&gt;
 // if-statement and conditional command in the same line, gotos aligned&lt;br /&gt;
 if (@quest &amp;gt;= 3) goto L_Done;&lt;br /&gt;
 if (@quest == 2) goto L_Progress;&lt;br /&gt;
 if (@quest == 1) goto L_Question;&lt;br /&gt;
 &lt;br /&gt;
 // conditional command in the next line and indented further&lt;br /&gt;
 if (BaseLevel &amp;lt; 40)&lt;br /&gt;
     set @cost, 100;&lt;br /&gt;
&lt;br /&gt;
== Whitespaces==&lt;br /&gt;
In many places whitespaces can increase readability. Examples are&lt;br /&gt;
* When concatenating text and variables:&lt;br /&gt;
 mes &amp;quot;\&amp;quot;Hello &amp;quot; + strcharinfo(0) + &amp;quot;!\&amp;quot;&amp;quot;;&lt;br /&gt;
instead of&lt;br /&gt;
 mes &amp;quot;\&amp;quot;Hello &amp;quot;+strcharinfo(0)+&amp;quot;!\&amp;quot;&amp;quot;;&lt;br /&gt;
* When assigning values to variables:&lt;br /&gt;
 set @var, 3;&lt;br /&gt;
instead of&lt;br /&gt;
 set @var,3;&lt;br /&gt;
* In menus:&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;, L_No;&lt;br /&gt;
instead of&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;,L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;,L_No;&lt;br /&gt;
&lt;br /&gt;
== Code Blocks ==&lt;br /&gt;
* Code blocks should be separated from the others in a dinstinct way: insert a blank line between code blocks. &lt;br /&gt;
* Individual blocks should be together No blank lines within a block. &lt;br /&gt;
* The opening brackets should be on a new line, not at the end of the parent line; the closing ones should be in a line of their own.&lt;br /&gt;
* A &#039;menu&#039; must not be in the body of an if statement. Instead, goto a new block for the menu, or negate the logic and goto somewhere else if the label should not be shown.&lt;br /&gt;
* The &#039;next&#039; command goes at the end of a block (before a goto), never at the beginning. Make sure &#039;next&#039; is never followed by something that leads to a &#039;close&#039; without intervening text.&lt;br /&gt;
&lt;br /&gt;
==Labels and Subfunctions==&lt;br /&gt;
* Labels should be named in this way: L_CamelCase&lt;br /&gt;
* Subfunctions should be named in this way: S_CamelCase&lt;br /&gt;
* Labels should always start with L_, except those that act as a subfunction, which should start with S_&lt;br /&gt;
* Newline before every label&lt;br /&gt;
* No newline after a label&lt;br /&gt;
* There must not be a fallthrough or goto to a subfunction label.&lt;br /&gt;
* A subfunction label must not goto a normal label. It may, however, goto another label that is specific to that subfunction, and eventually reach a return.&lt;br /&gt;
&lt;br /&gt;
* Many scripts use a label L_Close, which is used to reset temporary player variables to 0, and then ends the scripts with the close; command. If you use a label with that purpose, it should be named L_Close for consistency. (There are older scripts which use different names, e.g. L_end, but new ones should go with L_Close.)&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
At the beginning of a script file there should be documented &lt;br /&gt;
* who is the author&lt;br /&gt;
* the purpose of the script&lt;br /&gt;
* which variables are used and what&#039;s their purpose&lt;br /&gt;
* any additional information that can help to understand the script&lt;br /&gt;
Example:&lt;br /&gt;
 // Author: devxy&lt;br /&gt;
 // This file contains the NPC John, who is part of the Example quest.&lt;br /&gt;
 // Quest states are saved in Quest_Example.&lt;br /&gt;
 // State 1: started the quest&lt;br /&gt;
 // State 2: did the next step&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
Within the script there should be comments if there are parts which might be difficult to understand.&lt;br /&gt;
&lt;br /&gt;
In some of the older scripts there are boxed comments used like this:&lt;br /&gt;
 //#################################################################################&lt;br /&gt;
 //# NPC John - By Smith                                                           #&lt;br /&gt;
 //#                                                                               #&lt;br /&gt;
 //#  ...                                                                          #&lt;br /&gt;
 //#################################################################################&lt;br /&gt;
Don&#039;t use them in new scripts.&lt;br /&gt;
&lt;br /&gt;
== NPC Dialogs ==&lt;br /&gt;
In the following example our NPC dialog formatting guidelines are explained.&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;When I start speaking my name is put in square brackets, and my spoken text here is in quotation marks.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;The next between my previous line and this one interrupted my speaking, so I started with new quotation marks.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;But didn&#039;t close them in the same line, because I continue to speak here.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;A new message command can be used to have a line break in the dialog without interrupting the speaking.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;At the end I close the quotation marks again.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;Olaf stops speaking and scratches his head. This is a descriptive text, so it isn&#039;t put into quotation marks.&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;Now that I start speaking again, I need my name in brackets again before my actual text starts, because something else happened in between.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;It isn&#039;t that difficult, right?\&amp;quot;&amp;quot;;&lt;br /&gt;
     menu&lt;br /&gt;
         &amp;quot;I agree.&amp;quot;, L_Agree,&lt;br /&gt;
         &amp;quot;(Leave.)&amp;quot;, L_Close;&lt;br /&gt;
 &lt;br /&gt;
 L_Agree:&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;It&#039;s the same after there was a menu with the player saying or doing something, again I put my name into sqaure brackets before starting to speak.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;In the menu you can see that something the player says isn&#039;t put into quotation marks, but just as plain text.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;And an action the player takes is put into usual brackets.\&amp;quot;&amp;quot;;&lt;br /&gt;
     goto L_Close;&lt;br /&gt;
 &lt;br /&gt;
 L_Close:&lt;br /&gt;
     close;&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
==Document Variables==&lt;br /&gt;
in every file, document every variable as one of:&lt;br /&gt;
&lt;br /&gt;
* #  account variable (prefix #) (note that there are also ## variable which didn&#039;t work in the stable version of the server)&lt;br /&gt;
*    permanent player variable (no prefix)&lt;br /&gt;
* @  temporary player variable (prefix @) - used after the script close;s or end;s.&lt;br /&gt;
* @  dynamic player variable (prefix @) - passed into or out of callsub or callfunc&lt;br /&gt;
* @  lexical (local) player variable (prefix @) - used only within the function (scripthelp.txt documents that &amp;quot;.@&amp;quot; means this but I don&#039;t know if that works)&lt;br /&gt;
* @  local constant (prefix @) - not dependent on the player, used only within the function. e.g. lots of @QUEST_FOO_{SHIFT,MASK}&lt;br /&gt;
* $  global permanent variable (prefix $) (I&#039;m not sure if we have any of these right now)&lt;br /&gt;
* $  npc permanent variable (prefix $) same as above but only used by one NPC&lt;br /&gt;
* $  global temporary variable (prefix $@)&lt;br /&gt;
* $@ npc temporary variable (prefix $@) same as above but only used by one NPC, scripthelp.txt mentions prefix &amp;quot;.&amp;quot; but I don&#039;t know if that works&lt;br /&gt;
*    special variable (in db/const.txt with a 1 following)&lt;br /&gt;
*    global constant (in const.txt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If we use a consistent method of documenting these, we can then generate a list of all variables by type.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Variables initialization==&lt;br /&gt;
Check for troublesome arrays:&lt;br /&gt;
A troublesome array is defined as an array that is not&lt;br /&gt;
*initialized all at once&lt;br /&gt;
*initialized by appending elements to the end, for use in a menu&lt;br /&gt;
Nothing needs to be done, merely document them. I want this information at hand when I design the new scripting language to minimize conversion pains.&lt;br /&gt;
I wouldn&#039;t be surprised if there were no troublesome arrays at all. If there are only a couple it might be worth refactoring the code to remove them, but that might be a  high-level decision which is beyond the scope of this proposal.&lt;br /&gt;
&lt;br /&gt;
Set dynamic and local @variables to 0 before close;&lt;br /&gt;
&lt;br /&gt;
==Naming Variables==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using as little variables as you need==&lt;br /&gt;
So there are some quests, which require lots of variables.&lt;br /&gt;
Think of monster oil quest, Oric and Warum quest etc.&lt;br /&gt;
&lt;br /&gt;
This can often be done by bitmasking: &lt;br /&gt;
One variable has 32 bits. So a variabe can store 2^32 different numbers: 4294967296&lt;br /&gt;
&lt;br /&gt;
But sometimes you only need numbers from 0 to 15, but more of these variables.&lt;br /&gt;
but numbers in range 0 to 15 can be stored in 4 bits ( 2^4 = 16 different numbers)&lt;br /&gt;
&lt;br /&gt;
Here is an example how to use bitmasking:&lt;br /&gt;
[[Media:Tester.txt]]&lt;br /&gt;
== Defining Map Objects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These sections describe how to define map objects.&lt;br /&gt;
&lt;br /&gt;
=== Warp Definitions ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;Shouldn&#039;t be done manually.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
Warps are what move players between maps. They can also be used to move players around a single map, if needed. Warps are defined like this:&lt;br /&gt;
&lt;br /&gt;
 map1,startX,startY|warp|name|width,height,map2,endX,endY&lt;br /&gt;
&lt;br /&gt;
Key:&lt;br /&gt;
{|&lt;br /&gt;
|map1  ||the starting map&lt;br /&gt;
|-&lt;br /&gt;
|startX||the x-coordinate of the starting warp tile&lt;br /&gt;
|-&lt;br /&gt;
|startY||the y-coordinate of the starting warp tile&lt;br /&gt;
|-&lt;br /&gt;
|name  ||the name of the warp, unused but must be defined&lt;br /&gt;
|-&lt;br /&gt;
|width ||the width of the warp&lt;br /&gt;
|-&lt;br /&gt;
|height||the height of the warp&lt;br /&gt;
|-&lt;br /&gt;
|map2  ||the ending map&lt;br /&gt;
|-&lt;br /&gt;
|endX  ||the x-coordinate of the tile the player will end up on&lt;br /&gt;
|-&lt;br /&gt;
|endY  ||the y-coordinate of the tile the player will end up on&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Width and height are described in detail here: [[Dev:TmwAthena Scripting Standards/Warp Details|Warp Details]].&lt;br /&gt;
&lt;br /&gt;
=== Monster Definitions ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;Shouldn&#039;t be done manually.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
Monsters are defined like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;width&amp;gt;,&amp;lt;height&amp;gt;|monster|&amp;lt;name&amp;gt;|&amp;lt;mobID&amp;gt;,&amp;lt;count&amp;gt;,&amp;lt;spawn1&amp;gt;,&amp;lt;spawn2&amp;gt;,{&amp;lt;eventcode&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|map name   ||the map the monsters should appear on&lt;br /&gt;
|-&lt;br /&gt;
|x          ||the x-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|y          ||the y-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|width      ||the tile width of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|height     ||the tile height of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|name       ||the name of the mob, unused but must be defined. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use the keywords such as &amp;quot;spawn&amp;quot; in this name to avoid conflict with other game systems (magic for example)&lt;br /&gt;
|-&lt;br /&gt;
|mobID      ||the mob identifier of the desired monster (in the monster db)the number to spawn&lt;br /&gt;
|-&lt;br /&gt;
|count      ||the number to spawn&lt;br /&gt;
|-&lt;br /&gt;
|spawn1     ||the minimum delay between successive spawns (per individual)&lt;br /&gt;
|-&lt;br /&gt;
|spawn2     ||the minimum delay between death and respawn (per individual)&lt;br /&gt;
|-&lt;br /&gt;
|eventcode  ||the script event to fire upon death&lt;br /&gt;
|}&lt;br /&gt;
A detailed description of position and area can be found here: [[Dev:TmwAthena Scripting Standards/Mob Details|Mob Details]].&lt;br /&gt;
&lt;br /&gt;
=== NPC Definitions ===&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;facing&amp;gt;|script|&amp;lt;Name&amp;gt;|&amp;lt;spriteID&amp;gt;,&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;facing&amp;gt;|script|&amp;lt;Name&amp;gt;|&amp;lt;spriteID&amp;gt;,&amp;lt;triggerX&amp;gt;,&amp;lt;triggerY&amp;gt;,&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|map name   ||the map the monsters should appear on&lt;br /&gt;
|-&lt;br /&gt;
|x          ||the x-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|y          ||the y-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|facing     ||Direction the NPC faces to. &#039;&#039;&#039;It must be set to 0&#039;&#039;&#039; in TMW&lt;br /&gt;
|-&lt;br /&gt;
|height     ||the tile height of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|Name       ||the name of the NPC&lt;br /&gt;
|-&lt;br /&gt;
|spriteID   ||the mob identifier of the desired NPC. Sprite ID&lt;br /&gt;
|-&lt;br /&gt;
|triggerX   ||&lt;br /&gt;
|-&lt;br /&gt;
|triggerY   ||&lt;br /&gt;
|-&lt;br /&gt;
|eventcode  ||the script event to fire upon death&lt;br /&gt;
|}&lt;br /&gt;
* Server side :&lt;br /&gt;
::NPC definitions (script) are usually stored as : &amp;lt;br/&amp;gt;(tmwa-server-data/)world/map/npc/&amp;lt;map name&amp;gt;/&amp;lt;NPC Name&amp;gt;.txt or in the file :&amp;lt;br/&amp;gt;(tmwa-server-data/)world/map/npc/&amp;lt;map name&amp;gt;/npc.txt&lt;br /&gt;
* Client side :&lt;br /&gt;
::The NPC is associated with a sprite (the image that will appear in the game), and a XML file which tells the client some display parameters.&amp;lt;br/&amp;gt;(tmwa-client-data/)graphics/sprites/npcs/npc-&amp;lt;Name&amp;gt;.png&amp;lt;br/&amp;gt;(tmwa-client-data/)graphics/sprites/npcs/npc-&amp;lt;Name&amp;gt;.xml&amp;lt;br/&amp;gt;The NPC spriteID is linked to graphic files and XML in the file : (tmwa-client-data/)npcs.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- A detailed description of position and area can be found here: [[EAthena Scripting Standards/NPC Details|NPC Details]]. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script Functions ==&lt;br /&gt;
 function|script|&amp;lt;function name&amp;gt;|&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Actual script functions are stored or imported in the files : (tmwa-server-data/)world/map/npc/functions/&amp;lt;function name&amp;gt;.txt, regardless rhey are called from a Map, NPC, Mob or item.&lt;br /&gt;
&amp;lt;!-- A detailed description of position and area can be found here: [[EAthena Scripting Standards/function Details|function Details]]. --&amp;gt;&lt;br /&gt;
==Script Loading==&lt;br /&gt;
The main script import file is:[https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/npc/scripts.conf (tmwa-server-data/)world/map/npc/scripts.conf] &amp;lt;br/&amp;gt;&lt;br /&gt;
It loads [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/npc/_import.txt (tmwa-server-data/)world/map/npc/_import.txt] which imports all NPC scripts wich are stored under the respective map name folders, usually under NPC name.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
== Open a chest and get reward ==&lt;br /&gt;
An example is given by a quest to get a key for a chest (in fact 3 keys):&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:850px;&amp;quot; border=0 cellspacing=&amp;quot;10&amp;quot; &lt;br /&gt;
|-valign=&amp;quot;Top&amp;quot; &lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
// A treasure chest. You need three keys to open it.&lt;br /&gt;
//&lt;br /&gt;
// TMW_Quest (document variable here)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
002-4.gat,93,37,0|script|Treasure|111,&lt;br /&gt;
{&lt;br /&gt;
    if (TMW_Quest &amp;gt;= 38) goto L_Finished;&lt;br /&gt;
&lt;br /&gt;
    mes &amp;quot;There is a chest here.&amp;quot;;&lt;br /&gt;
    mes &amp;quot;Do you want to try to open it?&amp;quot;;&lt;br /&gt;
    next;&lt;br /&gt;
    menu&lt;br /&gt;
        &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
        &amp;quot;No.&amp;quot;, L_Close;&lt;br /&gt;
&lt;br /&gt;
L_Close:&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Yes:&lt;br /&gt;
    if(countitem(&amp;quot;TreasureKey&amp;quot;) &amp;lt; 3)&lt;br /&gt;
        goto L_Not_Enough;&lt;br /&gt;
    getinventorylist;&lt;br /&gt;
    if (@inventorylist_count == 100 &amp;amp;&amp;amp; countitem(&amp;quot;TreasureKey&amp;quot;) &amp;gt; 3)&lt;br /&gt;
        goto L_TooMany;&lt;br /&gt;
    mes &amp;quot;You opened the chest and found a short bow!&amp;quot;;&lt;br /&gt;
    delitem &amp;quot;TreasureKey&amp;quot;, 3;&lt;br /&gt;
    getitem &amp;quot;ShortBow&amp;quot;, 1;&lt;br /&gt;
    set TMW_Quest, 38;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Not_Enough:&lt;br /&gt;
    mes &amp;quot;It seems that you do not have the right key for this chest yet...&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Finished:&lt;br /&gt;
    mes &amp;quot;You have already opened this chest.&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_TooMany:&lt;br /&gt;
    mes &amp;quot;You do not have enough room to loot this chest. Maybe you should try again later.&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
This script starts with describing the NPC (the chest, NPC sprite 111) and its location (map 002-4 X=93, Y=37, in tiles from top left of the map). Then follows what happens on activation:&lt;br /&gt;
First, the variable &#039;&#039;&amp;quot;TMW_Quest&amp;quot;&#039;&#039; is checked to know if the player already accomplished the quest &amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;(the variable should be documented)&#039;&#039;&#039;&amp;lt;/span&amp;gt;, If he has the script continues at label &#039;&#039;L_Finished&#039;&#039;, the player is reminded fe alredy accomplished the task and script finishes, if not the scrip continues. A message is shown (mes), then an option dialog (menu) is displayed with two possible answers : &amp;quot;Yes.&amp;quot; or &amp;quot;No.&amp;quot;. If the player answers &amp;quot;No.&amp;quot; the script stops (close;); if he answers &amp;quot;Yes.&amp;quot; the script continues at label &#039;&#039;L_Yes&#039;&#039;. Now player is checked to know if he has at least 3 keys, if not script branches to label &#039;&#039;L_Not_Enough&#039;&#039; tells the player he  &amp;quot;has not the right key&amp;quot; and script closes. If he has keys enough, his inventory list is retrieved by the built-in function &amp;quot;getinventorylist&amp;quot; and it&#039;s content is checked to know if the player will have room enough to store the reward after the 3 keys use. If not, script goes to label &#039;&#039;L_TooMany&#039;&#039; and script close after a warning message, If yes 3 keys are deleted in player&#039;s inventory,  he gets the reward: a Short Bow and the variable TMW_Quest is set to 38.&lt;br /&gt;
&lt;br /&gt;
For more examples of the current system, check out the current scripts in use by the server. Beware though, this could affect your enjoyment of the game as it does spoil some of the mystery. Here&#039;s a link to git so you can view them in your browser:&lt;br /&gt;
&lt;br /&gt;
https://github.com/themanaworld/tmwa-server-data/tree/master/world/map/npc&lt;br /&gt;
&lt;br /&gt;
Note that anything said by an NPC should be put in double quotes (&amp;quot;). You can do that like this: &amp;quot;&#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039;Hello!&#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039; she said.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* [[Dev:TmwAthena Scripting Basics]]&lt;br /&gt;
* [[Dev:TmwAthena Scripting Reference]]&lt;br /&gt;
* [http://forums.themanaworld.org/viewtopic.php?f=13&amp;amp;t=13653 script cleanup/scripting standards proposal]&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Standards&amp;diff=30094</id>
		<title>Classic:TmwAthena Scripting Standards</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Standards&amp;diff=30094"/>
		<updated>2014-04-10T20:37:38Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* NPC Dialogs */ remove implicit &amp;quot;next&amp;quot; label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt to standardize the eAthena coding. Any suggestions are welcome to be posted on the discussion page before editing.&lt;br /&gt;
=Code Formatting=&lt;br /&gt;
== Indentation ==&lt;br /&gt;
* Code is indented with four spaces. &lt;br /&gt;
* Code in the same block should have the same indentation. &lt;br /&gt;
* Labels have no indentation. &lt;br /&gt;
* Menu options are on their own lines and are indented further. &lt;br /&gt;
Example:&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;, L_No;&lt;br /&gt;
* When using an if-statement, there should be a line break after the condition and the conditional command should be indented further. An exception to this is a series of if-statements at the beginning of a major code block which use gotos to jump to the correct position in the script. In this case the goto should be in the same line as the if-statement.&lt;br /&gt;
Example:&lt;br /&gt;
 // if-statement and conditional command in the same line, gotos aligned&lt;br /&gt;
 if (@quest &amp;gt;= 3) goto L_Done;&lt;br /&gt;
 if (@quest == 2) goto L_Progress;&lt;br /&gt;
 if (@quest == 1) goto L_Question;&lt;br /&gt;
 &lt;br /&gt;
 // conditional command in the next line and indented further&lt;br /&gt;
 if (BaseLevel &amp;lt; 40)&lt;br /&gt;
     set @cost, 100;&lt;br /&gt;
&lt;br /&gt;
== Whitespaces==&lt;br /&gt;
In many places whitespaces can increase readability. Examples are&lt;br /&gt;
* When concatenating text and variables:&lt;br /&gt;
 mes &amp;quot;\&amp;quot;Hello &amp;quot; + strcharinfo(0) + &amp;quot;!\&amp;quot;&amp;quot;;&lt;br /&gt;
instead of&lt;br /&gt;
 mes &amp;quot;\&amp;quot;Hello &amp;quot;+strcharinfo(0)+&amp;quot;!\&amp;quot;&amp;quot;;&lt;br /&gt;
* When assigning values to variables:&lt;br /&gt;
 set @var, 3;&lt;br /&gt;
instead of&lt;br /&gt;
 set @var,3;&lt;br /&gt;
* In menus:&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;, L_No;&lt;br /&gt;
instead of&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;,L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;,L_No;&lt;br /&gt;
&lt;br /&gt;
== Code Blocks ==&lt;br /&gt;
* Code blocks should be separated from the others in a dinstinct way: insert a blank line between code blocks. &lt;br /&gt;
* Individual blocks should be together No blank lines within a block. &lt;br /&gt;
* The opening brackets should be on a new line, not at the end of the parent line; the closing ones should be in a line of their own.&lt;br /&gt;
* A &#039;menu&#039; must not be in the body of an if statement. Instead, goto a new block for the menu, or negate the logic and goto somewhere else if the label should not be shown.&lt;br /&gt;
* The &#039;next&#039; command goes at the end of a block (before a goto), never at the beginning. Make sure &#039;next&#039; is never followed by something that leads to a &#039;close&#039; without intervening text.&lt;br /&gt;
&lt;br /&gt;
==Labels and Subfunctions==&lt;br /&gt;
* Labels should be named in this way: L_CamelCase&lt;br /&gt;
* Subfunctions should be named in this way: S_CamelCase&lt;br /&gt;
* Labels should always start with L_, except those that act as a subfunction, which should start with S_&lt;br /&gt;
* Newline before every label&lt;br /&gt;
* No newline after a label&lt;br /&gt;
* There must not be a fallthrough or goto to a subfunction label.&lt;br /&gt;
* A subfunction label must not goto a normal label. It may, however, goto another label that is specific to that subfunction, and eventually reach a return.&lt;br /&gt;
&lt;br /&gt;
* Many scripts use a label L_Close, which is used to reset temporary player variables to 0, and then ends the scripts with the close; command. If you use a label with that purpose, it should be named L_Close for consistency. (There are older scripts which use different names, e.g. L_end, but new ones should go with L_Close.)&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
At the beginning of a script file there should be documented &lt;br /&gt;
* who is the author&lt;br /&gt;
* the purpose of the script&lt;br /&gt;
* which variables are used and what&#039;s their purpose&lt;br /&gt;
* any additional information that can help to understand the script&lt;br /&gt;
Example:&lt;br /&gt;
 // Author: devxy&lt;br /&gt;
 // This file contains the NPC John, who is part of the Example quest.&lt;br /&gt;
 // Quest states are saved in Quest_Example.&lt;br /&gt;
 // State 1: started the quest&lt;br /&gt;
 // State 2: did the next step&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
Within the script there should be comments if there are parts which might be difficult to understand.&lt;br /&gt;
&lt;br /&gt;
In some of the older scripts there are boxed comments used like this:&lt;br /&gt;
 //#################################################################################&lt;br /&gt;
 //# NPC John - By Smith                                                           #&lt;br /&gt;
 //#                                                                               #&lt;br /&gt;
 //#  ...                                                                          #&lt;br /&gt;
 //#################################################################################&lt;br /&gt;
Don&#039;t use them in new scripts.&lt;br /&gt;
&lt;br /&gt;
== NPC Dialogs ==&lt;br /&gt;
In the following example our NPC dialog formatting guidelines are explained.&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;When I start speaking my name is put in square brackets, and my spoken text here is in quotation marks.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;The next between my previous line and this one interrupted my speaking, so I started with new quotation marks.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;But didn&#039;t close them in the same line, because I continue to speak here.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;A new message command can be used to have a line break in the dialog without interrupting the speaking.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;At the end I close the quotation marks again.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;Olaf stops speaking and scratches his head. This is a descriptive text, so it isn&#039;t put into quotation marks.&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;Now that I start speaking again, I need my name in brackets again before my actual text starts, because something else happened in between.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;It isn&#039;t that difficult, right?\&amp;quot;&amp;quot;;&lt;br /&gt;
     menu&lt;br /&gt;
         &amp;quot;I agree.&amp;quot;, L_Agree,&lt;br /&gt;
         &amp;quot;(Leave.)&amp;quot;, L_Close;&lt;br /&gt;
&lt;br /&gt;
L_Agree:&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;It&#039;s the same after there was a menu with the player saying or doing something, again I put my name into sqaure brackets before starting to speak.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;In the menu you can see that something the player says isn&#039;t put into quotation marks, but just as plain text.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;And an action the player takes is put into usual brackets.\&amp;quot;&amp;quot;;&lt;br /&gt;
     goto L_Close;&lt;br /&gt;
 &lt;br /&gt;
 L_Close:&lt;br /&gt;
     close;&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
==Document Variables==&lt;br /&gt;
in every file, document every variable as one of:&lt;br /&gt;
&lt;br /&gt;
* #  account variable (prefix #) (note that there are also ## variable which didn&#039;t work in the stable version of the server)&lt;br /&gt;
*    permanent player variable (no prefix)&lt;br /&gt;
* @  temporary player variable (prefix @) - used after the script close;s or end;s.&lt;br /&gt;
* @  dynamic player variable (prefix @) - passed into or out of callsub or callfunc&lt;br /&gt;
* @  lexical (local) player variable (prefix @) - used only within the function (scripthelp.txt documents that &amp;quot;.@&amp;quot; means this but I don&#039;t know if that works)&lt;br /&gt;
* @  local constant (prefix @) - not dependent on the player, used only within the function. e.g. lots of @QUEST_FOO_{SHIFT,MASK}&lt;br /&gt;
* $  global permanent variable (prefix $) (I&#039;m not sure if we have any of these right now)&lt;br /&gt;
* $  npc permanent variable (prefix $) same as above but only used by one NPC&lt;br /&gt;
* $  global temporary variable (prefix $@)&lt;br /&gt;
* $@ npc temporary variable (prefix $@) same as above but only used by one NPC, scripthelp.txt mentions prefix &amp;quot;.&amp;quot; but I don&#039;t know if that works&lt;br /&gt;
*    special variable (in db/const.txt with a 1 following)&lt;br /&gt;
*    global constant (in const.txt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If we use a consistent method of documenting these, we can then generate a list of all variables by type.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Variables initialization==&lt;br /&gt;
Check for troublesome arrays:&lt;br /&gt;
A troublesome array is defined as an array that is not&lt;br /&gt;
*initialized all at once&lt;br /&gt;
*initialized by appending elements to the end, for use in a menu&lt;br /&gt;
Nothing needs to be done, merely document them. I want this information at hand when I design the new scripting language to minimize conversion pains.&lt;br /&gt;
I wouldn&#039;t be surprised if there were no troublesome arrays at all. If there are only a couple it might be worth refactoring the code to remove them, but that might be a  high-level decision which is beyond the scope of this proposal.&lt;br /&gt;
&lt;br /&gt;
Set dynamic and local @variables to 0 before close;&lt;br /&gt;
&lt;br /&gt;
==Naming Variables==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using as little variables as you need==&lt;br /&gt;
So there are some quests, which require lots of variables.&lt;br /&gt;
Think of monster oil quest, Oric and Warum quest etc.&lt;br /&gt;
&lt;br /&gt;
This can often be done by bitmasking: &lt;br /&gt;
One variable has 32 bits. So a variabe can store 2^32 different numbers: 4294967296&lt;br /&gt;
&lt;br /&gt;
But sometimes you only need numbers from 0 to 15, but more of these variables.&lt;br /&gt;
but numbers in range 0 to 15 can be stored in 4 bits ( 2^4 = 16 different numbers)&lt;br /&gt;
&lt;br /&gt;
Here is an example how to use bitmasking:&lt;br /&gt;
[[Media:Tester.txt]]&lt;br /&gt;
== Defining Map Objects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These sections describe how to define map objects.&lt;br /&gt;
&lt;br /&gt;
=== Warp Definitions ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;Shouldn&#039;t be done manually.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
Warps are what move players between maps. They can also be used to move players around a single map, if needed. Warps are defined like this:&lt;br /&gt;
&lt;br /&gt;
 map1,startX,startY|warp|name|width,height,map2,endX,endY&lt;br /&gt;
&lt;br /&gt;
Key:&lt;br /&gt;
{|&lt;br /&gt;
|map1  ||the starting map&lt;br /&gt;
|-&lt;br /&gt;
|startX||the x-coordinate of the starting warp tile&lt;br /&gt;
|-&lt;br /&gt;
|startY||the y-coordinate of the starting warp tile&lt;br /&gt;
|-&lt;br /&gt;
|name  ||the name of the warp, unused but must be defined&lt;br /&gt;
|-&lt;br /&gt;
|width ||the width of the warp&lt;br /&gt;
|-&lt;br /&gt;
|height||the height of the warp&lt;br /&gt;
|-&lt;br /&gt;
|map2  ||the ending map&lt;br /&gt;
|-&lt;br /&gt;
|endX  ||the x-coordinate of the tile the player will end up on&lt;br /&gt;
|-&lt;br /&gt;
|endY  ||the y-coordinate of the tile the player will end up on&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Width and height are described in detail here: [[Dev:TmwAthena Scripting Standards/Warp Details|Warp Details]].&lt;br /&gt;
&lt;br /&gt;
=== Monster Definitions ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;Shouldn&#039;t be done manually.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
Monsters are defined like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;width&amp;gt;,&amp;lt;height&amp;gt;|monster|&amp;lt;name&amp;gt;|&amp;lt;mobID&amp;gt;,&amp;lt;count&amp;gt;,&amp;lt;spawn1&amp;gt;,&amp;lt;spawn2&amp;gt;,{&amp;lt;eventcode&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|map name   ||the map the monsters should appear on&lt;br /&gt;
|-&lt;br /&gt;
|x          ||the x-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|y          ||the y-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|width      ||the tile width of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|height     ||the tile height of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|name       ||the name of the mob, unused but must be defined. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use the keywords such as &amp;quot;spawn&amp;quot; in this name to avoid conflict with other game systems (magic for example)&lt;br /&gt;
|-&lt;br /&gt;
|mobID      ||the mob identifier of the desired monster (in the monster db)the number to spawn&lt;br /&gt;
|-&lt;br /&gt;
|count      ||the number to spawn&lt;br /&gt;
|-&lt;br /&gt;
|spawn1     ||the minimum delay between successive spawns (per individual)&lt;br /&gt;
|-&lt;br /&gt;
|spawn2     ||the minimum delay between death and respawn (per individual)&lt;br /&gt;
|-&lt;br /&gt;
|eventcode  ||the script event to fire upon death&lt;br /&gt;
|}&lt;br /&gt;
A detailed description of position and area can be found here: [[Dev:TmwAthena Scripting Standards/Mob Details|Mob Details]].&lt;br /&gt;
&lt;br /&gt;
=== NPC Definitions ===&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;facing&amp;gt;|script|&amp;lt;Name&amp;gt;|&amp;lt;spriteID&amp;gt;,&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;facing&amp;gt;|script|&amp;lt;Name&amp;gt;|&amp;lt;spriteID&amp;gt;,&amp;lt;triggerX&amp;gt;,&amp;lt;triggerY&amp;gt;,&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|map name   ||the map the monsters should appear on&lt;br /&gt;
|-&lt;br /&gt;
|x          ||the x-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|y          ||the y-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|facing     ||Direction the NPC faces to. &#039;&#039;&#039;It must be set to 0&#039;&#039;&#039; in TMW&lt;br /&gt;
|-&lt;br /&gt;
|height     ||the tile height of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|Name       ||the name of the NPC&lt;br /&gt;
|-&lt;br /&gt;
|spriteID   ||the mob identifier of the desired NPC. Sprite ID&lt;br /&gt;
|-&lt;br /&gt;
|triggerX   ||&lt;br /&gt;
|-&lt;br /&gt;
|triggerY   ||&lt;br /&gt;
|-&lt;br /&gt;
|eventcode  ||the script event to fire upon death&lt;br /&gt;
|}&lt;br /&gt;
* Server side :&lt;br /&gt;
::NPC definitions (script) are usually stored as : &amp;lt;br/&amp;gt;(tmwa-server-data/)world/map/npc/&amp;lt;map name&amp;gt;/&amp;lt;NPC Name&amp;gt;.txt or in the file :&amp;lt;br/&amp;gt;(tmwa-server-data/)world/map/npc/&amp;lt;map name&amp;gt;/npc.txt&lt;br /&gt;
* Client side :&lt;br /&gt;
::The NPC is associated with a sprite (the image that will appear in the game), and a XML file which tells the client some display parameters.&amp;lt;br/&amp;gt;(tmwa-client-data/)graphics/sprites/npcs/npc-&amp;lt;Name&amp;gt;.png&amp;lt;br/&amp;gt;(tmwa-client-data/)graphics/sprites/npcs/npc-&amp;lt;Name&amp;gt;.xml&amp;lt;br/&amp;gt;The NPC spriteID is linked to graphic files and XML in the file : (tmwa-client-data/)npcs.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- A detailed description of position and area can be found here: [[EAthena Scripting Standards/NPC Details|NPC Details]]. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script Functions ==&lt;br /&gt;
 function|script|&amp;lt;function name&amp;gt;|&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Actual script functions are stored or imported in the files : (tmwa-server-data/)world/map/npc/functions/&amp;lt;function name&amp;gt;.txt, regardless rhey are called from a Map, NPC, Mob or item.&lt;br /&gt;
&amp;lt;!-- A detailed description of position and area can be found here: [[EAthena Scripting Standards/function Details|function Details]]. --&amp;gt;&lt;br /&gt;
==Script Loading==&lt;br /&gt;
The main script import file is:[https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/npc/scripts.conf (tmwa-server-data/)world/map/npc/scripts.conf] &amp;lt;br/&amp;gt;&lt;br /&gt;
It loads [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/npc/_import.txt (tmwa-server-data/)world/map/npc/_import.txt] which imports all NPC scripts wich are stored under the respective map name folders, usually under NPC name.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
== Open a chest and get reward ==&lt;br /&gt;
An example is given by a quest to get a key for a chest (in fact 3 keys):&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:850px;&amp;quot; border=0 cellspacing=&amp;quot;10&amp;quot; &lt;br /&gt;
|-valign=&amp;quot;Top&amp;quot; &lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
// A treasure chest. You need three keys to open it.&lt;br /&gt;
//&lt;br /&gt;
// TMW_Quest (document variable here)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
002-4.gat,93,37,0|script|Treasure|111,&lt;br /&gt;
{&lt;br /&gt;
    if (TMW_Quest &amp;gt;= 38) goto L_Finished;&lt;br /&gt;
&lt;br /&gt;
    mes &amp;quot;There is a chest here.&amp;quot;;&lt;br /&gt;
    mes &amp;quot;Do you want to try to open it?&amp;quot;;&lt;br /&gt;
    next;&lt;br /&gt;
    menu&lt;br /&gt;
        &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
        &amp;quot;No.&amp;quot;, L_Close;&lt;br /&gt;
&lt;br /&gt;
L_Close:&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Yes:&lt;br /&gt;
    if(countitem(&amp;quot;TreasureKey&amp;quot;) &amp;lt; 3)&lt;br /&gt;
        goto L_Not_Enough;&lt;br /&gt;
    getinventorylist;&lt;br /&gt;
    if (@inventorylist_count == 100 &amp;amp;&amp;amp; countitem(&amp;quot;TreasureKey&amp;quot;) &amp;gt; 3)&lt;br /&gt;
        goto L_TooMany;&lt;br /&gt;
    mes &amp;quot;You opened the chest and found a short bow!&amp;quot;;&lt;br /&gt;
    delitem &amp;quot;TreasureKey&amp;quot;, 3;&lt;br /&gt;
    getitem &amp;quot;ShortBow&amp;quot;, 1;&lt;br /&gt;
    set TMW_Quest, 38;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Not_Enough:&lt;br /&gt;
    mes &amp;quot;It seems that you do not have the right key for this chest yet...&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Finished:&lt;br /&gt;
    mes &amp;quot;You have already opened this chest.&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_TooMany:&lt;br /&gt;
    mes &amp;quot;You do not have enough room to loot this chest. Maybe you should try again later.&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
This script starts with describing the NPC (the chest, NPC sprite 111) and its location (map 002-4 X=93, Y=37, in tiles from top left of the map). Then follows what happens on activation:&lt;br /&gt;
First, the variable &#039;&#039;&amp;quot;TMW_Quest&amp;quot;&#039;&#039; is checked to know if the player already accomplished the quest &amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;(the variable should be documented)&#039;&#039;&#039;&amp;lt;/span&amp;gt;, If he has the script continues at label &#039;&#039;L_Finished&#039;&#039;, the player is reminded fe alredy accomplished the task and script finishes, if not the scrip continues. A message is shown (mes), then an option dialog (menu) is displayed with two possible answers : &amp;quot;Yes.&amp;quot; or &amp;quot;No.&amp;quot;. If the player answers &amp;quot;No.&amp;quot; the script stops (close;); if he answers &amp;quot;Yes.&amp;quot; the script continues at label &#039;&#039;L_Yes&#039;&#039;. Now player is checked to know if he has at least 3 keys, if not script branches to label &#039;&#039;L_Not_Enough&#039;&#039; tells the player he  &amp;quot;has not the right key&amp;quot; and script closes. If he has keys enough, his inventory list is retrieved by the built-in function &amp;quot;getinventorylist&amp;quot; and it&#039;s content is checked to know if the player will have room enough to store the reward after the 3 keys use. If not, script goes to label &#039;&#039;L_TooMany&#039;&#039; and script close after a warning message, If yes 3 keys are deleted in player&#039;s inventory,  he gets the reward: a Short Bow and the variable TMW_Quest is set to 38.&lt;br /&gt;
&lt;br /&gt;
For more examples of the current system, check out the current scripts in use by the server. Beware though, this could affect your enjoyment of the game as it does spoil some of the mystery. Here&#039;s a link to git so you can view them in your browser:&lt;br /&gt;
&lt;br /&gt;
https://github.com/themanaworld/tmwa-server-data/tree/master/world/map/npc&lt;br /&gt;
&lt;br /&gt;
Note that anything said by an NPC should be put in double quotes (&amp;quot;). You can do that like this: &amp;quot;&#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039;Hello!&#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039; she said.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* [[Dev:TmwAthena Scripting Basics]]&lt;br /&gt;
* [[Dev:TmwAthena Scripting Reference]]&lt;br /&gt;
* [http://forums.themanaworld.org/viewtopic.php?f=13&amp;amp;t=13653 script cleanup/scripting standards proposal]&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Standards&amp;diff=30093</id>
		<title>Classic:TmwAthena Scripting Standards</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Standards&amp;diff=30093"/>
		<updated>2014-04-10T20:36:57Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* Open a chest and get reward */ remove implicit &amp;quot;next&amp;quot; label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is an attempt to standardize the eAthena coding. Any suggestions are welcome to be posted on the discussion page before editing.&lt;br /&gt;
=Code Formatting=&lt;br /&gt;
== Indentation ==&lt;br /&gt;
* Code is indented with four spaces. &lt;br /&gt;
* Code in the same block should have the same indentation. &lt;br /&gt;
* Labels have no indentation. &lt;br /&gt;
* Menu options are on their own lines and are indented further. &lt;br /&gt;
Example:&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;, L_No;&lt;br /&gt;
* When using an if-statement, there should be a line break after the condition and the conditional command should be indented further. An exception to this is a series of if-statements at the beginning of a major code block which use gotos to jump to the correct position in the script. In this case the goto should be in the same line as the if-statement.&lt;br /&gt;
Example:&lt;br /&gt;
 // if-statement and conditional command in the same line, gotos aligned&lt;br /&gt;
 if (@quest &amp;gt;= 3) goto L_Done;&lt;br /&gt;
 if (@quest == 2) goto L_Progress;&lt;br /&gt;
 if (@quest == 1) goto L_Question;&lt;br /&gt;
 &lt;br /&gt;
 // conditional command in the next line and indented further&lt;br /&gt;
 if (BaseLevel &amp;lt; 40)&lt;br /&gt;
     set @cost, 100;&lt;br /&gt;
&lt;br /&gt;
== Whitespaces==&lt;br /&gt;
In many places whitespaces can increase readability. Examples are&lt;br /&gt;
* When concatenating text and variables:&lt;br /&gt;
 mes &amp;quot;\&amp;quot;Hello &amp;quot; + strcharinfo(0) + &amp;quot;!\&amp;quot;&amp;quot;;&lt;br /&gt;
instead of&lt;br /&gt;
 mes &amp;quot;\&amp;quot;Hello &amp;quot;+strcharinfo(0)+&amp;quot;!\&amp;quot;&amp;quot;;&lt;br /&gt;
* When assigning values to variables:&lt;br /&gt;
 set @var, 3;&lt;br /&gt;
instead of&lt;br /&gt;
 set @var,3;&lt;br /&gt;
* In menus:&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;, L_No;&lt;br /&gt;
instead of&lt;br /&gt;
 menu&lt;br /&gt;
     &amp;quot;Yes.&amp;quot;,L_Yes,&lt;br /&gt;
     &amp;quot;No.&amp;quot;,L_No;&lt;br /&gt;
&lt;br /&gt;
== Code Blocks ==&lt;br /&gt;
* Code blocks should be separated from the others in a dinstinct way: insert a blank line between code blocks. &lt;br /&gt;
* Individual blocks should be together No blank lines within a block. &lt;br /&gt;
* The opening brackets should be on a new line, not at the end of the parent line; the closing ones should be in a line of their own.&lt;br /&gt;
* A &#039;menu&#039; must not be in the body of an if statement. Instead, goto a new block for the menu, or negate the logic and goto somewhere else if the label should not be shown.&lt;br /&gt;
* The &#039;next&#039; command goes at the end of a block (before a goto), never at the beginning. Make sure &#039;next&#039; is never followed by something that leads to a &#039;close&#039; without intervening text.&lt;br /&gt;
&lt;br /&gt;
==Labels and Subfunctions==&lt;br /&gt;
* Labels should be named in this way: L_CamelCase&lt;br /&gt;
* Subfunctions should be named in this way: S_CamelCase&lt;br /&gt;
* Labels should always start with L_, except those that act as a subfunction, which should start with S_&lt;br /&gt;
* Newline before every label&lt;br /&gt;
* No newline after a label&lt;br /&gt;
* There must not be a fallthrough or goto to a subfunction label.&lt;br /&gt;
* A subfunction label must not goto a normal label. It may, however, goto another label that is specific to that subfunction, and eventually reach a return.&lt;br /&gt;
&lt;br /&gt;
* Many scripts use a label L_Close, which is used to reset temporary player variables to 0, and then ends the scripts with the close; command. If you use a label with that purpose, it should be named L_Close for consistency. (There are older scripts which use different names, e.g. L_end, but new ones should go with L_Close.)&lt;br /&gt;
&lt;br /&gt;
==Comments==&lt;br /&gt;
At the beginning of a script file there should be documented &lt;br /&gt;
* who is the author&lt;br /&gt;
* the purpose of the script&lt;br /&gt;
* which variables are used and what&#039;s their purpose&lt;br /&gt;
* any additional information that can help to understand the script&lt;br /&gt;
Example:&lt;br /&gt;
 // Author: devxy&lt;br /&gt;
 // This file contains the NPC John, who is part of the Example quest.&lt;br /&gt;
 // Quest states are saved in Quest_Example.&lt;br /&gt;
 // State 1: started the quest&lt;br /&gt;
 // State 2: did the next step&lt;br /&gt;
 [...]&lt;br /&gt;
&lt;br /&gt;
Within the script there should be comments if there are parts which might be difficult to understand.&lt;br /&gt;
&lt;br /&gt;
In some of the older scripts there are boxed comments used like this:&lt;br /&gt;
 //#################################################################################&lt;br /&gt;
 //# NPC John - By Smith                                                           #&lt;br /&gt;
 //#                                                                               #&lt;br /&gt;
 //#  ...                                                                          #&lt;br /&gt;
 //#################################################################################&lt;br /&gt;
Don&#039;t use them in new scripts.&lt;br /&gt;
&lt;br /&gt;
== NPC Dialogs ==&lt;br /&gt;
In the following example our NPC dialog formatting guidelines are explained.&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;When I start speaking my name is put in square brackets, and my spoken text here is in quotation marks.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;The next between my previous line and this one interrupted my speaking, so I started with new quotation marks.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;But didn&#039;t close them in the same line, because I continue to speak here.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;A new message command can be used to have a line break in the dialog without interrupting the speaking.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;At the end I close the quotation marks again.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;Olaf stops speaking and scratches his head. This is a descriptive text, so it isn&#039;t put into quotation marks.&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;Now that I start speaking again, I need my name in brackets again before my actual text starts, because something else happened in between.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;It isn&#039;t that difficult, right?\&amp;quot;&amp;quot;;&lt;br /&gt;
     menu&lt;br /&gt;
         &amp;quot;I agree.&amp;quot;, -,&lt;br /&gt;
         &amp;quot;(Leave.)&amp;quot;, L_Close;&lt;br /&gt;
     mes &amp;quot;[Example NPC Olaf]&amp;quot;;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;It&#039;s the same after there was a menu with the player saying or doing something, again I put my name into sqaure brackets before starting to speak.\&amp;quot;&amp;quot;;&lt;br /&gt;
     next;&lt;br /&gt;
     mes &amp;quot;\&amp;quot;In the menu you can see that something the player says isn&#039;t put into quotation marks, but just as plain text.&amp;quot;;&lt;br /&gt;
     mes &amp;quot;And an action the player takes is put into usual brackets.\&amp;quot;&amp;quot;;&lt;br /&gt;
     goto L_Close;&lt;br /&gt;
 &lt;br /&gt;
 L_Close:&lt;br /&gt;
     close;&lt;br /&gt;
&lt;br /&gt;
=Variables=&lt;br /&gt;
==Document Variables==&lt;br /&gt;
in every file, document every variable as one of:&lt;br /&gt;
&lt;br /&gt;
* #  account variable (prefix #) (note that there are also ## variable which didn&#039;t work in the stable version of the server)&lt;br /&gt;
*    permanent player variable (no prefix)&lt;br /&gt;
* @  temporary player variable (prefix @) - used after the script close;s or end;s.&lt;br /&gt;
* @  dynamic player variable (prefix @) - passed into or out of callsub or callfunc&lt;br /&gt;
* @  lexical (local) player variable (prefix @) - used only within the function (scripthelp.txt documents that &amp;quot;.@&amp;quot; means this but I don&#039;t know if that works)&lt;br /&gt;
* @  local constant (prefix @) - not dependent on the player, used only within the function. e.g. lots of @QUEST_FOO_{SHIFT,MASK}&lt;br /&gt;
* $  global permanent variable (prefix $) (I&#039;m not sure if we have any of these right now)&lt;br /&gt;
* $  npc permanent variable (prefix $) same as above but only used by one NPC&lt;br /&gt;
* $  global temporary variable (prefix $@)&lt;br /&gt;
* $@ npc temporary variable (prefix $@) same as above but only used by one NPC, scripthelp.txt mentions prefix &amp;quot;.&amp;quot; but I don&#039;t know if that works&lt;br /&gt;
*    special variable (in db/const.txt with a 1 following)&lt;br /&gt;
*    global constant (in const.txt)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If we use a consistent method of documenting these, we can then generate a list of all variables by type.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==Variables initialization==&lt;br /&gt;
Check for troublesome arrays:&lt;br /&gt;
A troublesome array is defined as an array that is not&lt;br /&gt;
*initialized all at once&lt;br /&gt;
*initialized by appending elements to the end, for use in a menu&lt;br /&gt;
Nothing needs to be done, merely document them. I want this information at hand when I design the new scripting language to minimize conversion pains.&lt;br /&gt;
I wouldn&#039;t be surprised if there were no troublesome arrays at all. If there are only a couple it might be worth refactoring the code to remove them, but that might be a  high-level decision which is beyond the scope of this proposal.&lt;br /&gt;
&lt;br /&gt;
Set dynamic and local @variables to 0 before close;&lt;br /&gt;
&lt;br /&gt;
==Naming Variables==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Using as little variables as you need==&lt;br /&gt;
So there are some quests, which require lots of variables.&lt;br /&gt;
Think of monster oil quest, Oric and Warum quest etc.&lt;br /&gt;
&lt;br /&gt;
This can often be done by bitmasking: &lt;br /&gt;
One variable has 32 bits. So a variabe can store 2^32 different numbers: 4294967296&lt;br /&gt;
&lt;br /&gt;
But sometimes you only need numbers from 0 to 15, but more of these variables.&lt;br /&gt;
but numbers in range 0 to 15 can be stored in 4 bits ( 2^4 = 16 different numbers)&lt;br /&gt;
&lt;br /&gt;
Here is an example how to use bitmasking:&lt;br /&gt;
[[Media:Tester.txt]]&lt;br /&gt;
== Defining Map Objects ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These sections describe how to define map objects.&lt;br /&gt;
&lt;br /&gt;
=== Warp Definitions ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;Shouldn&#039;t be done manually.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
Warps are what move players between maps. They can also be used to move players around a single map, if needed. Warps are defined like this:&lt;br /&gt;
&lt;br /&gt;
 map1,startX,startY|warp|name|width,height,map2,endX,endY&lt;br /&gt;
&lt;br /&gt;
Key:&lt;br /&gt;
{|&lt;br /&gt;
|map1  ||the starting map&lt;br /&gt;
|-&lt;br /&gt;
|startX||the x-coordinate of the starting warp tile&lt;br /&gt;
|-&lt;br /&gt;
|startY||the y-coordinate of the starting warp tile&lt;br /&gt;
|-&lt;br /&gt;
|name  ||the name of the warp, unused but must be defined&lt;br /&gt;
|-&lt;br /&gt;
|width ||the width of the warp&lt;br /&gt;
|-&lt;br /&gt;
|height||the height of the warp&lt;br /&gt;
|-&lt;br /&gt;
|map2  ||the ending map&lt;br /&gt;
|-&lt;br /&gt;
|endX  ||the x-coordinate of the tile the player will end up on&lt;br /&gt;
|-&lt;br /&gt;
|endY  ||the y-coordinate of the tile the player will end up on&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Width and height are described in detail here: [[Dev:TmwAthena Scripting Standards/Warp Details|Warp Details]].&lt;br /&gt;
&lt;br /&gt;
=== Monster Definitions ===&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;Shouldn&#039;t be done manually.&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
Monsters are defined like this:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;width&amp;gt;,&amp;lt;height&amp;gt;|monster|&amp;lt;name&amp;gt;|&amp;lt;mobID&amp;gt;,&amp;lt;count&amp;gt;,&amp;lt;spawn1&amp;gt;,&amp;lt;spawn2&amp;gt;,{&amp;lt;eventcode&amp;gt;}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|map name   ||the map the monsters should appear on&lt;br /&gt;
|-&lt;br /&gt;
|x          ||the x-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|y          ||the y-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|width      ||the tile width of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|height     ||the tile height of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|name       ||the name of the mob, unused but must be defined. &#039;&#039;&#039;DO NOT&#039;&#039;&#039; use the keywords such as &amp;quot;spawn&amp;quot; in this name to avoid conflict with other game systems (magic for example)&lt;br /&gt;
|-&lt;br /&gt;
|mobID      ||the mob identifier of the desired monster (in the monster db)the number to spawn&lt;br /&gt;
|-&lt;br /&gt;
|count      ||the number to spawn&lt;br /&gt;
|-&lt;br /&gt;
|spawn1     ||the minimum delay between successive spawns (per individual)&lt;br /&gt;
|-&lt;br /&gt;
|spawn2     ||the minimum delay between death and respawn (per individual)&lt;br /&gt;
|-&lt;br /&gt;
|eventcode  ||the script event to fire upon death&lt;br /&gt;
|}&lt;br /&gt;
A detailed description of position and area can be found here: [[Dev:TmwAthena Scripting Standards/Mob Details|Mob Details]].&lt;br /&gt;
&lt;br /&gt;
=== NPC Definitions ===&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;facing&amp;gt;|script|&amp;lt;Name&amp;gt;|&amp;lt;spriteID&amp;gt;,&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
 &amp;lt;map name&amp;gt;,&amp;lt;x&amp;gt;,&amp;lt;y&amp;gt;,&amp;lt;facing&amp;gt;|script|&amp;lt;Name&amp;gt;|&amp;lt;spriteID&amp;gt;,&amp;lt;triggerX&amp;gt;,&amp;lt;triggerY&amp;gt;,&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|map name   ||the map the monsters should appear on&lt;br /&gt;
|-&lt;br /&gt;
|x          ||the x-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|y          ||the y-coordinate of the spawn tile&lt;br /&gt;
|-&lt;br /&gt;
|facing     ||Direction the NPC faces to. &#039;&#039;&#039;It must be set to 0&#039;&#039;&#039; in TMW&lt;br /&gt;
|-&lt;br /&gt;
|height     ||the tile height of the spawn area&lt;br /&gt;
|-&lt;br /&gt;
|Name       ||the name of the NPC&lt;br /&gt;
|-&lt;br /&gt;
|spriteID   ||the mob identifier of the desired NPC. Sprite ID&lt;br /&gt;
|-&lt;br /&gt;
|triggerX   ||&lt;br /&gt;
|-&lt;br /&gt;
|triggerY   ||&lt;br /&gt;
|-&lt;br /&gt;
|eventcode  ||the script event to fire upon death&lt;br /&gt;
|}&lt;br /&gt;
* Server side :&lt;br /&gt;
::NPC definitions (script) are usually stored as : &amp;lt;br/&amp;gt;(tmwa-server-data/)world/map/npc/&amp;lt;map name&amp;gt;/&amp;lt;NPC Name&amp;gt;.txt or in the file :&amp;lt;br/&amp;gt;(tmwa-server-data/)world/map/npc/&amp;lt;map name&amp;gt;/npc.txt&lt;br /&gt;
* Client side :&lt;br /&gt;
::The NPC is associated with a sprite (the image that will appear in the game), and a XML file which tells the client some display parameters.&amp;lt;br/&amp;gt;(tmwa-client-data/)graphics/sprites/npcs/npc-&amp;lt;Name&amp;gt;.png&amp;lt;br/&amp;gt;(tmwa-client-data/)graphics/sprites/npcs/npc-&amp;lt;Name&amp;gt;.xml&amp;lt;br/&amp;gt;The NPC spriteID is linked to graphic files and XML in the file : (tmwa-client-data/)npcs.xml&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- A detailed description of position and area can be found here: [[EAthena Scripting Standards/NPC Details|NPC Details]]. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Script Functions ==&lt;br /&gt;
 function|script|&amp;lt;function name&amp;gt;|&amp;lt;nowiki&amp;gt;{&amp;lt;code&amp;gt;}&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Actual script functions are stored or imported in the files : (tmwa-server-data/)world/map/npc/functions/&amp;lt;function name&amp;gt;.txt, regardless rhey are called from a Map, NPC, Mob or item.&lt;br /&gt;
&amp;lt;!-- A detailed description of position and area can be found here: [[EAthena Scripting Standards/function Details|function Details]]. --&amp;gt;&lt;br /&gt;
==Script Loading==&lt;br /&gt;
The main script import file is:[https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/npc/scripts.conf (tmwa-server-data/)world/map/npc/scripts.conf] &amp;lt;br/&amp;gt;&lt;br /&gt;
It loads [https://github.com/themanaworld/tmwa-server-data/blob/master/world/map/npc/_import.txt (tmwa-server-data/)world/map/npc/_import.txt] which imports all NPC scripts wich are stored under the respective map name folders, usually under NPC name.&lt;br /&gt;
&lt;br /&gt;
=Examples=&lt;br /&gt;
== Open a chest and get reward ==&lt;br /&gt;
An example is given by a quest to get a key for a chest (in fact 3 keys):&lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;width:850px;&amp;quot; border=0 cellspacing=&amp;quot;10&amp;quot; &lt;br /&gt;
|-valign=&amp;quot;Top&amp;quot; &lt;br /&gt;
|&amp;lt;pre&amp;gt;&lt;br /&gt;
// A treasure chest. You need three keys to open it.&lt;br /&gt;
//&lt;br /&gt;
// TMW_Quest (document variable here)&lt;br /&gt;
//&lt;br /&gt;
&lt;br /&gt;
002-4.gat,93,37,0|script|Treasure|111,&lt;br /&gt;
{&lt;br /&gt;
    if (TMW_Quest &amp;gt;= 38) goto L_Finished;&lt;br /&gt;
&lt;br /&gt;
    mes &amp;quot;There is a chest here.&amp;quot;;&lt;br /&gt;
    mes &amp;quot;Do you want to try to open it?&amp;quot;;&lt;br /&gt;
    next;&lt;br /&gt;
    menu&lt;br /&gt;
        &amp;quot;Yes.&amp;quot;, L_Yes,&lt;br /&gt;
        &amp;quot;No.&amp;quot;, L_Close;&lt;br /&gt;
&lt;br /&gt;
L_Close:&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Yes:&lt;br /&gt;
    if(countitem(&amp;quot;TreasureKey&amp;quot;) &amp;lt; 3)&lt;br /&gt;
        goto L_Not_Enough;&lt;br /&gt;
    getinventorylist;&lt;br /&gt;
    if (@inventorylist_count == 100 &amp;amp;&amp;amp; countitem(&amp;quot;TreasureKey&amp;quot;) &amp;gt; 3)&lt;br /&gt;
        goto L_TooMany;&lt;br /&gt;
    mes &amp;quot;You opened the chest and found a short bow!&amp;quot;;&lt;br /&gt;
    delitem &amp;quot;TreasureKey&amp;quot;, 3;&lt;br /&gt;
    getitem &amp;quot;ShortBow&amp;quot;, 1;&lt;br /&gt;
    set TMW_Quest, 38;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Not_Enough:&lt;br /&gt;
    mes &amp;quot;It seems that you do not have the right key for this chest yet...&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_Finished:&lt;br /&gt;
    mes &amp;quot;You have already opened this chest.&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
&lt;br /&gt;
L_TooMany:&lt;br /&gt;
    mes &amp;quot;You do not have enough room to loot this chest. Maybe you should try again later.&amp;quot;;&lt;br /&gt;
    close;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
This script starts with describing the NPC (the chest, NPC sprite 111) and its location (map 002-4 X=93, Y=37, in tiles from top left of the map). Then follows what happens on activation:&lt;br /&gt;
First, the variable &#039;&#039;&amp;quot;TMW_Quest&amp;quot;&#039;&#039; is checked to know if the player already accomplished the quest &amp;lt;span style=&amp;quot;color:OrangeRed&amp;quot;&amp;gt;&#039;&#039;&#039;(the variable should be documented)&#039;&#039;&#039;&amp;lt;/span&amp;gt;, If he has the script continues at label &#039;&#039;L_Finished&#039;&#039;, the player is reminded fe alredy accomplished the task and script finishes, if not the scrip continues. A message is shown (mes), then an option dialog (menu) is displayed with two possible answers : &amp;quot;Yes.&amp;quot; or &amp;quot;No.&amp;quot;. If the player answers &amp;quot;No.&amp;quot; the script stops (close;); if he answers &amp;quot;Yes.&amp;quot; the script continues at label &#039;&#039;L_Yes&#039;&#039;. Now player is checked to know if he has at least 3 keys, if not script branches to label &#039;&#039;L_Not_Enough&#039;&#039; tells the player he  &amp;quot;has not the right key&amp;quot; and script closes. If he has keys enough, his inventory list is retrieved by the built-in function &amp;quot;getinventorylist&amp;quot; and it&#039;s content is checked to know if the player will have room enough to store the reward after the 3 keys use. If not, script goes to label &#039;&#039;L_TooMany&#039;&#039; and script close after a warning message, If yes 3 keys are deleted in player&#039;s inventory,  he gets the reward: a Short Bow and the variable TMW_Quest is set to 38.&lt;br /&gt;
&lt;br /&gt;
For more examples of the current system, check out the current scripts in use by the server. Beware though, this could affect your enjoyment of the game as it does spoil some of the mystery. Here&#039;s a link to git so you can view them in your browser:&lt;br /&gt;
&lt;br /&gt;
https://github.com/themanaworld/tmwa-server-data/tree/master/world/map/npc&lt;br /&gt;
&lt;br /&gt;
Note that anything said by an NPC should be put in double quotes (&amp;quot;). You can do that like this: &amp;quot;&#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039;Hello!&#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039; she said.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=References=&lt;br /&gt;
* [[Dev:TmwAthena Scripting Basics]]&lt;br /&gt;
* [[Dev:TmwAthena Scripting Reference]]&lt;br /&gt;
* [http://forums.themanaworld.org/viewtopic.php?f=13&amp;amp;t=13653 script cleanup/scripting standards proposal]&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Reference&amp;diff=30092</id>
		<title>Classic:TmwAthena Scripting Reference</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Classic:TmwAthena_Scripting_Reference&amp;diff=30092"/>
		<updated>2014-04-10T20:35:17Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* menu */ Remove default label&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is a reference for commands believed to work in the eAthena scripting language still used by tmwAthena.&lt;br /&gt;
&lt;br /&gt;
A number of problematic commands have been removed from this list, but not all commands have been tested.&lt;br /&gt;
&lt;br /&gt;
== Language Commands ==&lt;br /&gt;
These are command that are closely tied to the language itself.&lt;br /&gt;
&lt;br /&gt;
=== goto ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    goto L_1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unconditionally jump to a label. Often used in an &amp;quot;if&amp;quot; body.&lt;br /&gt;
&lt;br /&gt;
=== callsub ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    callsub S_labelname, arguments...;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jump to the given label. When the &amp;quot;return&amp;quot; statement is executed, continue on the next line.&lt;br /&gt;
&lt;br /&gt;
It is not known whether &amp;quot;arguments...&amp;quot; works, we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
It might also be possible to use this as a function, if the form of return with a value is used, but we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
=== callfunc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    callfunc &amp;quot;function_name&amp;quot;, arguments...;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Jump to the given function script. When the &amp;quot;return&amp;quot; statement is executed, continue on the next line of this script.&lt;br /&gt;
&lt;br /&gt;
It is not known whether &amp;quot;arguments...&amp;quot; works, we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
It might also be possible to use this as a function, if the form of return with a value is used, but we use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;return&amp;quot; is broken if this is used from within an if(). If you need a conditional callfunc, first goto a label.&lt;br /&gt;
&lt;br /&gt;
=== return ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    return;&lt;br /&gt;
    return expr;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return from this script or sublabel to the calling function.&lt;br /&gt;
&lt;br /&gt;
It is unknown what happens if this is used from the top-level script, use &amp;quot;close&amp;quot; or &amp;quot;end&amp;quot; instead.&lt;br /&gt;
&lt;br /&gt;
We use temporary variables instead of the form that returns an expression.&lt;br /&gt;
&lt;br /&gt;
=== getarg ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getarg(index)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return (by reference?) an argument of &amp;quot;callsub&amp;quot; or &amp;quot;callfunc&amp;quot;. Aborts the script if used at toplevel of if out of range.&lt;br /&gt;
&lt;br /&gt;
We use temporary variables instead.&lt;br /&gt;
&lt;br /&gt;
=== set ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    set variable, expression;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Very common command, to set variables.&lt;br /&gt;
&lt;br /&gt;
=== setarray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setarray arrayvariable, val1, val2, ...;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set elements of an array. Previous elements are not cleared. At most 128 elements can be assigned.&lt;br /&gt;
&lt;br /&gt;
It is currently possible, but deprecated, to specify a (zero-based) array index to start at the given part of an array. It&#039;s pretty amazing that that code works anyway.&lt;br /&gt;
&lt;br /&gt;
Remember that there are no permanent arrays, only temporary.&lt;br /&gt;
&lt;br /&gt;
=== cleararray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    cleararray variable, value, count;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fill an array with &amp;quot;count&amp;quot; copies of &amp;quot;value&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== copyarray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    copyarray dest_var, src_var, count;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Copy elements of an array.&lt;br /&gt;
&lt;br /&gt;
This function looks broken to me.&lt;br /&gt;
&lt;br /&gt;
=== getarraysize ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getarraysize variable;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get the size of an array.&lt;br /&gt;
&lt;br /&gt;
The size of an array is simply one more than the index of the last nonzero integer or nonempty string.&lt;br /&gt;
&lt;br /&gt;
WARNING: most functions that set an array do not bother to clear out high indices. You should almost always use an explicitly-provided size instead.&lt;br /&gt;
&lt;br /&gt;
=== deletearray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    deletearray variable[, count = 1];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove count elements from an array.&lt;br /&gt;
&lt;br /&gt;
If there are elements beyond count, they will be shifted into lower indices.&lt;br /&gt;
&lt;br /&gt;
After that, all remaining elements will be set to 0 or &amp;quot;&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
This function is currently broken, instead use cleararray variable, 0, count;&lt;br /&gt;
&lt;br /&gt;
=== getelementofarray ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getelementofarray(arrayname, index_expr)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This function is invoked internally by the arrayname[index_expr] syntax.&lt;br /&gt;
&lt;br /&gt;
=== if ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    if (condition) condition_command [conditional_command_args, ...];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If condition is zero, do nothing. Else, evaluate the conditional command.&lt;br /&gt;
&lt;br /&gt;
The only thing special about the if command is the lack of commas during parsing (from my reading this is only a warning?). During execution it is perfectly normal.&lt;br /&gt;
&lt;br /&gt;
Note: you must not use a callsub or callfunc as conditional_command.&lt;br /&gt;
&lt;br /&gt;
=== end ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    end;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop executing the script.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t use this if you have opened a dialog to the player, use &amp;quot;close&amp;quot; instead. Or, use &amp;quot;close2&amp;quot; and *then* &amp;quot;end&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== debugmes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    debugmes &amp;quot;string&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Print a message to stdout.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Message Commands ==&lt;br /&gt;
These are commands for dialog or one-way chat with players.&lt;br /&gt;
&lt;br /&gt;
=== mes ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mes &amp;quot;string&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a line of text to the player. If a dialog box is not already open for the attached NPC, one will be created.&lt;br /&gt;
&lt;br /&gt;
It is unknown if the client properly supports dialog with multiple NPCs simultaneously. Note that the server only allows each account one paused script at a time, so it probably wouldn&#039;t work anyway.&lt;br /&gt;
&lt;br /&gt;
If you need to include the &#039;&#039;&#039;&amp;quot;&#039;&#039;&#039; character inside the message, (especially for dialogs) insert it as &#039;&#039;&#039;\&amp;quot;&#039;&#039;&#039;.&lt;br /&gt;
When doing several messages without a next; in between, there should be only a single \&amp;quot; at the beginning and the end each.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Example&#039;&#039;&#039;:&lt;br /&gt;
 mes &amp;quot;[Me Myself]&amp;quot;;&lt;br /&gt;
 mes &amp;quot;&amp;quot;;&lt;br /&gt;
 mes &amp;quot;(I clear my throat)&amp;quot;&lt;br /&gt;
 mes &amp;quot;&amp;quot;;&lt;br /&gt;
 mes &amp;quot;\&amp;quot;I start talking here, and don&#039;t close the quotation marks, because I&#039;m not yet done talking.&amp;quot;;&lt;br /&gt;
 mes &amp;quot;And start a new line, but without new quotation marks.&amp;quot;;&lt;br /&gt;
 mes &amp;quot;Here I stop talking, so I close the quotation marks.\&amp;quot;&amp;quot;;&lt;br /&gt;
gives:&lt;br /&gt;
[Me Myself]&lt;br /&gt;
&lt;br /&gt;
(I clear my throat)&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I start talking here, and don&#039;t close the quotation marks, because I&#039;m not yet done talking.&amp;lt;br&amp;gt;&lt;br /&gt;
And start a new line, but without new quotation marks.&amp;lt;br&amp;gt;&lt;br /&gt;
Here I stop talking, so I close the quotation marks.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== next ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    next;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop the script until the user presses &amp;quot;Next&amp;quot; in the dialog.&lt;br /&gt;
&lt;br /&gt;
=== close ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    close;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop executing the script and give the user a &amp;quot;Close&amp;quot; button in the dialog.&lt;br /&gt;
&lt;br /&gt;
=== close2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    close2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop the script until the user presses the &amp;quot;Close&amp;quot; button in the dialog, then keep executing the script.&lt;br /&gt;
&lt;br /&gt;
WARNING: unlike close, this command is a blocking command, the usual caveats apply.&lt;br /&gt;
&lt;br /&gt;
=== menu ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    menu&lt;br /&gt;
        &amp;quot;option 1&amp;quot;, L_1,&lt;br /&gt;
        &amp;quot;option 2&amp;quot;, L_2;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a list of choices to the player, then branch to the specified label.&lt;br /&gt;
&lt;br /&gt;
Additionally, the temporary variable &amp;quot;@menu&amp;quot; is set to the 1-based index of the choice.&lt;br /&gt;
&lt;br /&gt;
The options must not contain the character &amp;quot;:&amp;quot;, as the protocol uses it as a separator.&lt;br /&gt;
&lt;br /&gt;
=== input ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    input variable_name;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Input an integer or string to the given variable, depending on whether has the &#039;$&#039; string postfix.&lt;br /&gt;
&lt;br /&gt;
The implementation allows variable_name to be omitted if input is an integer, in case l14 is used. Don&#039;t use this.&lt;br /&gt;
&lt;br /&gt;
=== announce ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    announce &amp;quot;message&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Do a GM message.&lt;br /&gt;
&lt;br /&gt;
If flag &amp;amp; 0xF == 0 forward it to all map servers.&lt;br /&gt;
If flag &amp;amp; 0x8, message is from the OID (NPC? usually?) rather than the RID (player).&lt;br /&gt;
&lt;br /&gt;
If (flag &amp;amp; 0x7) == 1, send to all on map.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 2, send to all in line of sight.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 3, send to self only.&lt;br /&gt;
If (flag &amp;amp; 0x7) == anything else, send to all clients.&lt;br /&gt;
&lt;br /&gt;
=== mapannounce ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mapannounce &amp;quot;mapname&amp;quot;, &amp;quot;message&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Send an announcement to all players in map.&lt;br /&gt;
&lt;br /&gt;
Only flag &amp;amp; 0x10 is interpreted, which does not work with the Mana client. So, flag must be 0.&lt;br /&gt;
&lt;br /&gt;
=== areaannounce ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    areaannounce &amp;quot;mapname&amp;quot;, x0, y0, x1, y1, &amp;quot;message&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Send an announcement to all players in area.&lt;br /&gt;
&lt;br /&gt;
Only flag &amp;amp; 0x10 is interpreted, which does not work with the Mana client. So, flag must be 0.&lt;br /&gt;
&lt;br /&gt;
=== message ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    message &amp;quot;player&amp;quot;, &amp;quot;message&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display (in chat) a message from the server to a single user.&lt;br /&gt;
&lt;br /&gt;
=== npctalk ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    npctalk &amp;quot;message&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Make an NPC say something publicly.&lt;br /&gt;
&lt;br /&gt;
Note: in many cases areaannounce is a better choice.&lt;br /&gt;
&lt;br /&gt;
== Character Commands ==&lt;br /&gt;
These have to do with attributes of the player.&lt;br /&gt;
&lt;br /&gt;
=== setlook ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setlook type, value;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set an aspect of a character&#039;s appearance. Used e.g. by the barber.&lt;br /&gt;
&lt;br /&gt;
There are constant provided for the LOOK type, and for hair color and hair style.&lt;br /&gt;
&lt;br /&gt;
=== heal ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    heal hp, sp&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase or decrease the player&#039;s hp and sp.&lt;br /&gt;
&lt;br /&gt;
=== itemheal ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    itemheal &amp;quot;ii&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase or decrease the player&#039;s hp and sp, for use in item scripts.&lt;br /&gt;
&lt;br /&gt;
=== percentheal ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    percentheal &amp;quot;ii&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase or decrease the player&#039;s hp and sp, by percentage of max HP.&lt;br /&gt;
&lt;br /&gt;
This is probably the best way to instakill the player.&lt;br /&gt;
&lt;br /&gt;
=== readparam ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    readparam(type[, &amp;quot;playername&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return one of the core parameters of a player.&lt;br /&gt;
&lt;br /&gt;
type is one of the bCamelCase constants, see db/const.txt&lt;br /&gt;
&lt;br /&gt;
=== getcharid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getcharid(type[ &amp;quot;playername&amp;quot;])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get an id of the attached (or given) player.&lt;br /&gt;
&lt;br /&gt;
Type is:&lt;br /&gt;
0: char id&lt;br /&gt;
1: party id&lt;br /&gt;
2: guild id (deprecated)&lt;br /&gt;
3: account id&lt;br /&gt;
&lt;br /&gt;
You usually want 3.&lt;br /&gt;
&lt;br /&gt;
=== getpartyname ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getpartyname(partyid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the name of the party with the given id, or &amp;quot;null&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== getpartymember ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getpartymember partyid&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fills in the array $@partymembername$&lt;br /&gt;
&lt;br /&gt;
=== strcharinfo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    strcharinfo(num)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return string information about an account:&lt;br /&gt;
num==0: name&lt;br /&gt;
num==1: party name&lt;br /&gt;
num==2: guild name (deprecated)&lt;br /&gt;
&lt;br /&gt;
=== sc_start ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sc_start type, tick, val1[, beingid];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Apply a status effect to a player (or monster?).&lt;br /&gt;
&lt;br /&gt;
type is one of the sc_* constants.&lt;br /&gt;
&lt;br /&gt;
=== sc_start2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sc_start2 type, tick, val1, chance[, beingid];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Chance of applying a status effect, out of 10000.&lt;br /&gt;
&lt;br /&gt;
=== sc_end ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sc_end type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Immediately end status effect on current player.&lt;br /&gt;
&lt;br /&gt;
=== sc_check ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    sc_check(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Whether a status effect is currently active.&lt;br /&gt;
&lt;br /&gt;
=== getscrate ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getscrate(type, rate[, being_id])&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
If the sc is poison, modify rate by (3 + vit + luk/3) percent.&lt;br /&gt;
&lt;br /&gt;
The form that accepts a being_id is broken in the current stable version of the server.&lt;br /&gt;
&lt;br /&gt;
=== resetlvl ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    resetlvl type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== resetstatus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    resetstatus;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== resetskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    resetskill;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== changesex ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    changesex;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ask the login server (via the char server) to toggle this account&#039;s sex, then kick the player.&lt;br /&gt;
&lt;br /&gt;
=== attachrid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    attachrid(id)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change the being associated with this script.&lt;br /&gt;
&lt;br /&gt;
Return true if such a player is logged in.&lt;br /&gt;
&lt;br /&gt;
=== detachrid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    detachrid;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Detach the player associated with this script.&lt;br /&gt;
&lt;br /&gt;
=== isloggedin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isloggedin(id)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return true if the given ID is logged in.&lt;br /&gt;
&lt;br /&gt;
Often you shouldn&#039;t use this, but attachrid(id) instead&lt;br /&gt;
&lt;br /&gt;
=== marriage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    marriage(&amp;quot;otherplayer&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Marry the attached player to the other player.&lt;br /&gt;
&lt;br /&gt;
Return 1 on success and 0 on failure.&lt;br /&gt;
&lt;br /&gt;
=== divorce ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    divorce()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Divorce the attached player from their partner&lt;br /&gt;
&lt;br /&gt;
Return 1 on success and 0 on failure.&lt;br /&gt;
&lt;br /&gt;
=== getpartnerid2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getpartnerid2()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the ID of the attached player&#039;s partner (0 is none).&lt;br /&gt;
&lt;br /&gt;
=== getexp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getexp base, job;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Increase the types of experience.&lt;br /&gt;
&lt;br /&gt;
=== getinventorylist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getinventorylist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fill in some arrays of useful information: &amp;quot;@inventorylist_id&amp;quot;, &amp;quot;@inventorylist_amount&amp;quot;, &amp;quot;@inventorylist_equip&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The arrays are not cleared between calls, use &amp;quot;@inventory_count&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== getskilllist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getskilllist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Fill in some arrays of useful information: &amp;quot;@skilllist_id&amp;quot;, &amp;quot;@skilllist_lv&amp;quot;, &amp;quot;@skilllist_flag&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The arrays are not cleared between calls, use &amp;quot;@skill_count&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== getpoolskilllist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getpoolskilllist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Same, but only poolable skills.&lt;br /&gt;
&lt;br /&gt;
=== getactivatedpoolskilllist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getactivatedpoolskilllist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Same, but only activated pool skills.&lt;br /&gt;
&lt;br /&gt;
=== getunactivatedpoolskilllist ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getunactivatedpoolskilllist;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Same, but only unactivated pool skills.&lt;br /&gt;
&lt;br /&gt;
=== poolskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    poolskill skill_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Activate a poolable skill.&lt;br /&gt;
&lt;br /&gt;
=== unpoolskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    unpoolskill skill_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Deactivate a poolable skill.&lt;br /&gt;
&lt;br /&gt;
=== checkpoolskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    checkpoolskill(skill_id)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Check if a pool skill is activated&lt;br /&gt;
&lt;br /&gt;
=== misceffect ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    misceffect type, &amp;quot;player_name&amp;quot;;&lt;br /&gt;
    misceffect type, being_id;&lt;br /&gt;
    misceffect type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a miscellaneous effect on a being.&lt;br /&gt;
&lt;br /&gt;
In the third form, it will use the OID if possible, and fallback to the RID.&lt;br /&gt;
&lt;br /&gt;
=== getlook ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getlook(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return part of the player&#039;s appearance:&lt;br /&gt;
val==1: hair&lt;br /&gt;
val==2: weapon&lt;br /&gt;
val==3: bottom&lt;br /&gt;
val==4: middle&lt;br /&gt;
val==5: top&lt;br /&gt;
val==6: hair color&lt;br /&gt;
val==8: shield&lt;br /&gt;
val==9: shoes&lt;br /&gt;
&lt;br /&gt;
On failure, return -1.&lt;br /&gt;
&lt;br /&gt;
=== getsavepoint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getsavepoint(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
type==0: Return savepoint map&lt;br /&gt;
type==1: Return savepoint x&lt;br /&gt;
type==2: Return savepoint y&lt;br /&gt;
&lt;br /&gt;
This is believed to be the only function (other than callfunc and callsub of course) that returns a different type depending on its arguments.&lt;br /&gt;
&lt;br /&gt;
=== shop ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    shop &amp;quot;npcname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Close the script and open the given NPC&#039;s shop.&lt;br /&gt;
&lt;br /&gt;
=== isdead ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isdead()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 1 if the attached player is dead, else 0.&lt;br /&gt;
&lt;br /&gt;
=== fakenpcname ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    fakenpcname &amp;quot;name&amp;quot;, &amp;quot;newname&amp;quot;, new_sprite_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Change the appearance of an NPC.&lt;br /&gt;
&lt;br /&gt;
== Location Commands ==&lt;br /&gt;
These are commands that have to do with the location of players&lt;br /&gt;
&lt;br /&gt;
=== warp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    warp &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Warp the attached player to the given location. &amp;quot;mapname&amp;quot; may have the special values &amp;quot;Random&amp;quot;, &amp;quot;SavePoint&amp;quot;, and &amp;quot;Save&amp;quot; (case-sensitive), but x and y are still required.&lt;br /&gt;
&lt;br /&gt;
=== isat ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isat(&amp;quot;mapname&amp;quot;, x, y)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 1 if the attached player is at the given location, 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
=== areawarp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    areawarp &amp;quot;src_map&amp;quot;, x0, y0, x1, y1, &amp;quot;dst_map&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Warp all players in the given area to the given location.&lt;br /&gt;
&lt;br /&gt;
=== getusers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getusers(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count users.&lt;br /&gt;
&lt;br /&gt;
If flag &amp;amp; 0x8, base on OID instead of RID.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 0, return users on the map.&lt;br /&gt;
If (flag &amp;amp; 0x7) == 1, return users on the server.&lt;br /&gt;
&lt;br /&gt;
=== getmapusers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getmapusers(&amp;quot;mapname&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count users on a given map.&lt;br /&gt;
&lt;br /&gt;
=== getareausers ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getareausers(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1, z)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count users in an area.&lt;br /&gt;
z can be set to 1 or be left out to check for players who are alive.&lt;br /&gt;
&lt;br /&gt;
=== mapwarp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mapwarp &amp;quot;src_map&amp;quot;, &amp;quot;dst_map&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Warp all players from source map to destination location.&lt;br /&gt;
&lt;br /&gt;
=== npcwarp ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    npcwarp x, y, &amp;quot;npcname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Move an NPC to a different location on the same map.&lt;br /&gt;
&lt;br /&gt;
=== isin ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    isin(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Check if the player is in the area.&lt;br /&gt;
&lt;br /&gt;
=== getx ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getx()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return attached player&#039;s x coordinate.&lt;br /&gt;
&lt;br /&gt;
=== gety ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gety()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return attached player&#039;s y coordinate.&lt;br /&gt;
&lt;br /&gt;
=== getmap ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getmap()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return attached player&#039;s current map.&lt;br /&gt;
&lt;br /&gt;
== Item Commands ==&lt;br /&gt;
These have to do with items or inventory.&lt;br /&gt;
&lt;br /&gt;
=== getitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getitem &amp;quot;itemname&amp;quot;, count[, unused_argument[, playerid]];&lt;br /&gt;
    getitem itemid, count[, unused_argument[, playerid]];&lt;br /&gt;
&amp;quot;ii**&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grant the attached player (or the given player) &amp;quot;count&amp;quot; copies of an item.&lt;br /&gt;
&lt;br /&gt;
If itemname is unrecognized you get an iten (727) instead.&lt;br /&gt;
&lt;br /&gt;
;Warning:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    delitem: only deletes one item if applied to not-stackable item (equipment)&lt;br /&gt;
    getitem: gives item stacked, even if it&#039;s equipment&lt;br /&gt;
    fix: use a loop and only delete/give one item at a time&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== makeitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    makeitem &amp;quot;itemname&amp;quot;, count, &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
    makeitem itemid, count, &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Drop items on the ground.&lt;br /&gt;
&lt;br /&gt;
The special &amp;quot;mapname&amp;quot; value &amp;quot;this&amp;quot; means the map of the attached player.&lt;br /&gt;
&lt;br /&gt;
=== delitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    delitem &amp;quot;itemname&amp;quot;, count;&lt;br /&gt;
    delitem itemid, count;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove items from the attached player&#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
This command is buggy if the player does not have enough of the item. And if the item is not stackable, the command will delete only one of them, even if a higher number is specified.&lt;br /&gt;
;Warning:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    delitem: only deletes one item if applied to not-stackable item (equipment)&lt;br /&gt;
    getitem: gives item stacked, even if it&#039;s equipment&lt;br /&gt;
    fix: use a loop and only delete/give one item at a time&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== countitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    countitem(&amp;quot;itemname&amp;quot;)&lt;br /&gt;
    countitem(itemid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the number of the given item in the player&#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
=== checkweight ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    checkweight(&amp;quot;itemname&amp;quot;, count)&lt;br /&gt;
    checkweight(itemid, count)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 0 if adding &amp;quot;count&amp;quot; of the item would put player above max weight, 1 if it would still be less than max weight.&lt;br /&gt;
Also returns 0 if item does not exist.&lt;br /&gt;
&lt;br /&gt;
=== getequipid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getequipid(equip_point)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the ID of the item in the given equip slot.&lt;br /&gt;
&lt;br /&gt;
equip_point is one of the equip_* constants&lt;br /&gt;
&lt;br /&gt;
=== getequipname ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getequipname(equip_point)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the name of the item in the given equip slot.&lt;br /&gt;
&lt;br /&gt;
equip_point is one of the equip_* constants&lt;br /&gt;
&lt;br /&gt;
=== getequipisequiped ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getequipisequiped(num)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 1 if the player currently has an item equipped in the slot.&lt;br /&gt;
&lt;br /&gt;
=== statusup ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    statusup bType;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Permanently increase a stat by one point.&lt;br /&gt;
&lt;br /&gt;
=== statusup2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    statusup2 bType, delta;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Permanently increase or decrease a stat.&lt;br /&gt;
&lt;br /&gt;
=== bonus ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    bonus bType, delta&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Temporarily increase a stat. For use in item scripts only.&lt;br /&gt;
&lt;br /&gt;
=== skill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    skill id, level[, flag = 1];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grant a skill.&lt;br /&gt;
&lt;br /&gt;
flag==0: permanent skill&lt;br /&gt;
flag==1: temporary skill (item scripts only)&lt;br /&gt;
&lt;br /&gt;
(Untested)&lt;br /&gt;
&lt;br /&gt;
=== setskill ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setskill id, level;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Grant a skill permanently.&lt;br /&gt;
&lt;br /&gt;
=== getskilllv ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getskilllv(skill)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the player&#039;s level of the given skill.&lt;br /&gt;
&lt;br /&gt;
=== getgmlevel ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getgmlevel()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the player&#039;s GM level.&lt;br /&gt;
&lt;br /&gt;
=== getopt2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getopt2()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the player&#039;s opt2 flags.&lt;br /&gt;
&lt;br /&gt;
=== setopt2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setopt2 flags;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the player&#039;s opt2 flags.&lt;br /&gt;
&lt;br /&gt;
=== checkoption ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    checkoption(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 1 if the player has any of the given (XOR&#039;ed) option bits. Usually only one is given.&lt;br /&gt;
&lt;br /&gt;
=== setoption ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setoption type&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the player&#039;s option flags exactly (not OR&#039;ing).&lt;br /&gt;
&lt;br /&gt;
=== savepoint ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    savepoint &amp;quot;mapname&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the player&#039;s save point. Used e.g. by Soul Menhirs, and during the time travel quest.&amp;lt;!-- Don&#039;t remove this just because you can&#039;t figure out how to start it from this end. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== openstorage ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    openstorage;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Open the player&#039;s storage.&lt;br /&gt;
&lt;br /&gt;
=== getitemname ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getitemname(&amp;quot;itemname&amp;quot;)&lt;br /&gt;
    getitemname(itemid)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the name of the item, or &amp;quot;Unknown Item&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== clearitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    clearitem;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Remove all items from a player&#039;s inventory.&lt;br /&gt;
&lt;br /&gt;
=== nude ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    nude;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unequip all items.&lt;br /&gt;
&lt;br /&gt;
=== hasitems ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    hasitems()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return 1 if the player has any inventory, 0 otherwise.&lt;br /&gt;
&lt;br /&gt;
=== unequipbyid ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    unequipbyid slot_id;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unequip whatever is in the slot&lt;br /&gt;
&lt;br /&gt;
=== getareadropitem ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getareadropitem(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1, &amp;quot;itemname&amp;quot;[, delitems = 0]);&lt;br /&gt;
    getareadropitem(&amp;quot;mapname&amp;quot;, x0, y0, x1, y1, itemid[, delitems = 0]);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count items on the floor in an area. If delitems, the items will be deleted as well.&lt;br /&gt;
&lt;br /&gt;
== Common Functions ==&lt;br /&gt;
These are not mostly not related to the RPG or the scripting language.&lt;br /&gt;
&lt;br /&gt;
=== rand ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    rand(range)&lt;br /&gt;
    rand(min, max)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the first form, return a random number between 0 (inclusive) and range (exclusive). Return 0 if range is not positive.&lt;br /&gt;
In the second form, return a random number between min and max, inclusive. Min and max may be swapped.&lt;br /&gt;
&lt;br /&gt;
=== gettimetick ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gettimetick(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return one of the ticks&lt;br /&gt;
&lt;br /&gt;
type==0 (or other): milliseconds since some point in time, wraps every 50 days.&lt;br /&gt;
type==1: time since midnight, UTC.&lt;br /&gt;
type==2: seconds since the epoch.&lt;br /&gt;
&lt;br /&gt;
You should almost always use type 2.&lt;br /&gt;
&lt;br /&gt;
=== gettime ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gettime(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get a component of the time (UTC).&lt;br /&gt;
&lt;br /&gt;
1: second (0-59)&lt;br /&gt;
2: minute (0-59)&lt;br /&gt;
3: hour (0-23)&lt;br /&gt;
4: day of week (0-6)&lt;br /&gt;
5: day of month (1-31)&lt;br /&gt;
6: month (1-12)&lt;br /&gt;
7: year (1902-2038)&lt;br /&gt;
&lt;br /&gt;
== Timers and Events ==&lt;br /&gt;
These have to do with transfering control in ways that are not immediately obvious.&lt;br /&gt;
&lt;br /&gt;
The most common ones are initnpctimer or startnpctimer, stopnpctimer, and setnpctimer.&lt;br /&gt;
&lt;br /&gt;
=== doevent ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    doevent &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manually invoke an NPC event.&lt;br /&gt;
&lt;br /&gt;
=== donpcevent ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    donpcevent &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Manually invoke an NPC event.&lt;br /&gt;
&lt;br /&gt;
=== addtimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    addtimer tick, &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Invoke an NPC event after a delay, for the attached NPC.&lt;br /&gt;
&lt;br /&gt;
This command does the same thing as areatimer, but for only the attached player.&lt;br /&gt;
&lt;br /&gt;
=== deltimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    deltimer &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This command is untested and might freeze the server.&lt;br /&gt;
&lt;br /&gt;
=== initnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    initnpctimer;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the NPC&#039;s attached timer to tick 0 and start it.&lt;br /&gt;
&lt;br /&gt;
This is equivalent to setnpctimer, 0; startnpctimer;&lt;br /&gt;
&lt;br /&gt;
=== stopnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    stopnpctimer;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Stop the NPC&#039;s attached timer.&lt;br /&gt;
&lt;br /&gt;
This DOES NOT do anything about the tick. But that&#039;s okay, you should normally be starting it with initnpctimer.&lt;br /&gt;
&lt;br /&gt;
=== startnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    startnpctimer;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Start the NPC&#039;s attached timer, without setting the tick.&lt;br /&gt;
&lt;br /&gt;
=== setnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setnpctimer tick;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the NPC&#039;s timer to a specific tick. Generally, this is only useful for tick 0.&lt;br /&gt;
&lt;br /&gt;
=== getnpctimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getnpctimer(type)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Get the current tick of an NPC&#039;s timer.&lt;br /&gt;
&lt;br /&gt;
type==0: timer event tick (like setnpctimer)&lt;br /&gt;
type==1: bool if it has a next timer.&lt;br /&gt;
type==2: timer amount&lt;br /&gt;
&lt;br /&gt;
=== cmdothernpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    cmdothernpc &amp;quot;npc&amp;quot;, &amp;quot;Foo&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Invoke ::OnCommandFoo&lt;br /&gt;
&lt;br /&gt;
=== mobcount ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    mobcount(&amp;quot;mapname&amp;quot;, &amp;quot;event&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Count the remaining mobs from the spawn with the given event. Has an offset of -1.&lt;br /&gt;
&lt;br /&gt;
=== areatimer ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    areatimer &amp;quot;mapname&amp;quot;, x0, y0, x1, y1, tick, &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Add a PC event timer to all players in the area.&lt;br /&gt;
&lt;br /&gt;
After &amp;quot;tick&amp;quot; milliseconds, the given NPC event will fire with each player as the RID.&lt;br /&gt;
&lt;br /&gt;
== Unsorted Commands ==&lt;br /&gt;
These are commands that still need sorting, please edit this page, see talk page for category (and subcategory?) suggestions.&lt;br /&gt;
&lt;br /&gt;
=== monster ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    monster &amp;quot;mapname&amp;quot;, x, y, &amp;quot;string&amp;quot;, class, count[, &amp;quot;event&amp;quot;];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spawn monsters at a point. If you define an OnDead event using a trigger area then the event is shot only inside that area, hence the event is ignored when the monster is killed outside the trigger area.&lt;br /&gt;
&lt;br /&gt;
=== areamonster ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    areamonster &amp;quot;mapname&amp;quot;, x0, y0, x1, y1, &amp;quot;string&amp;quot;, class, count[, &amp;quot;event&amp;quot;];&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Spawn monsters in an area. If you define an OnDead event using a trigger area then the event is shot only inside that area, hence the event is ignored when the monster is killed outside the trigger area.&lt;br /&gt;
&lt;br /&gt;
=== killmonster ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    killmonster &amp;quot;mapname&amp;quot;, &amp;quot;event&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kill monsters on a map.&lt;br /&gt;
&lt;br /&gt;
Unless it is &amp;quot;All&amp;quot;, &amp;quot;event&amp;quot; must match the one used at spawn time.&lt;br /&gt;
&lt;br /&gt;
If &amp;quot;All&amp;quot; is given, this function properly preserves permanently respawning monsters.&lt;br /&gt;
&lt;br /&gt;
=== killmonsterall ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    killmonsterall &amp;quot;mapname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Kill all monsters unconditionally.&lt;br /&gt;
&lt;br /&gt;
This command might prevent monsters from respawning. Instead use &amp;quot;killmonster&amp;quot; with &amp;quot;event&amp;quot; == &amp;quot;All&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== enablenpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    enablenpc &amp;quot;name&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Enable an NPC.&lt;br /&gt;
&lt;br /&gt;
=== disablenpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    disablenpc &amp;quot;name&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Disable an NPC.&lt;br /&gt;
&lt;br /&gt;
=== hideoffnpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    hideoffnpc &amp;quot;name&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
What does this do?&lt;br /&gt;
&lt;br /&gt;
=== hideonnpc ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    hideonnpc &amp;quot;name&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
What does this do?&lt;br /&gt;
&lt;br /&gt;
=== setmapflagnosave ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setmapflagnosave &amp;quot;mapname&amp;quot;, &amp;quot;savemap&amp;quot;, x, y;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set the nosave flag and respawn location.&lt;br /&gt;
&lt;br /&gt;
=== setmapflag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    setmapflag &amp;quot;mapname&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Set an arbitrary mapflag.&lt;br /&gt;
&lt;br /&gt;
=== removemapflag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    removemapflag &amp;quot;mapname&amp;quot;, flag;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Unset an arbitrary mapflag.&lt;br /&gt;
&lt;br /&gt;
=== getmapflag ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getmapflag(&amp;quot;mapname&amp;quot;, flag);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Check an arbitrary mapflag.&lt;br /&gt;
&lt;br /&gt;
=== pvpon ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    pvpon &amp;quot;mapname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Allow PvP on a map.&lt;br /&gt;
&lt;br /&gt;
=== pvpoff ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    pvpoff &amp;quot;mapname&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Deny PvP on a map.&lt;br /&gt;
&lt;br /&gt;
=== emotion ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    emotion emote_index;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Show a smiley above the OID.&lt;br /&gt;
&lt;br /&gt;
=== getspellinvocation ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getspellinvocation(&amp;quot;spell-identifier&amp;quot;)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the #invocation used for a spell, or &amp;quot;...&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
=== getanchorinvocation ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    getanchorinvocation &amp;quot;anchor-identifier&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Return the invocation used for a teleport anchor (?)&lt;br /&gt;
&lt;br /&gt;
=== strmobinfo ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    strmobinfo(num, class)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Info about a type of mob:&lt;br /&gt;
num==1: name&lt;br /&gt;
num==2: jname&lt;br /&gt;
num==3: lv&lt;br /&gt;
num==4: maxhp&lt;br /&gt;
num==5: maxsp&lt;br /&gt;
num==6: base_exp&lt;br /&gt;
num==7: job_exp&lt;br /&gt;
&lt;br /&gt;
Note that only types 1 and 2 actually return strings, the rest return integers&lt;br /&gt;
&lt;br /&gt;
=== specialeffect ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    specialeffect type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Display a special effect on the OID.&lt;br /&gt;
&lt;br /&gt;
Same as &amp;quot;misceffect&amp;quot;, but does not fallback when there is no OID.&lt;br /&gt;
&lt;br /&gt;
=== specialeffect2 ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    specialeffect2 type;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Same as &amp;quot;misceffect&amp;quot;, but works when there is an OID.&lt;br /&gt;
&lt;br /&gt;
=== gmcommand ===&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    gmcommand &amp;quot;@command maybe with arguments&amp;quot;;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Run a GM command, at level 99.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Jmf&amp;diff=29442</id>
		<title>User talk:Jmf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Jmf&amp;diff=29442"/>
		<updated>2014-02-21T16:15:22Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 16:15, 21 February 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Jmf&amp;diff=29441</id>
		<title>User:Jmf</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Jmf&amp;diff=29441"/>
		<updated>2014-02-21T16:15:21Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hey, I am jmf and just joined The Mana World.&lt;br /&gt;
I am quite enthusiastic about this and I want to contribute to the project.&lt;br /&gt;
I have some experience with C++ and I have previously translated texts for some other FLOSS projects.&lt;br /&gt;
That&#039;s about all that is there to say about myself.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Template:I18n&amp;diff=29324</id>
		<title>Template:I18n</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Template:I18n&amp;diff=29324"/>
		<updated>2014-02-17T18:34:18Z</updated>

		<summary type="html">&lt;p&gt;O11c: Add Czech&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;This template contains translation links for user articles. This template is only for user articles. Development pages should not receive this.&lt;br /&gt;
&lt;br /&gt;
Only use in the main namespace for now.&lt;br /&gt;
{{I18n}}&lt;br /&gt;
&amp;lt;!--ONLY SERVER ADMINS SHOULD EDIT THIS AS NAMESPACES NEED TO BE ADDED IN THE PHP CODE. YOU HAVE BEEN WARNED! --&amp;gt;&lt;br /&gt;
&amp;lt;!--Seriously. This was messed up in the past. Don&#039;t edit this without ssh access. --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&amp;lt;includeonly&amp;gt;&amp;lt;div class=&amp;quot;toc noprint&amp;quot; style=&amp;quot;border: 1px solid #da72ff; color: #000; background-color: #eebeff; text-align: center; margin-bottom: 1em&amp;quot;&amp;gt;&lt;br /&gt;
[[Ar:{{PAGENAMEE}}|العربية]]&lt;br /&gt;
- [[Cz:{{PAGENAMEE}}|Česky]]&lt;br /&gt;
- [[De:{{PAGENAMEE}}|Deutsch]]&lt;br /&gt;
- [[{{PAGENAMEE}}|English]]&lt;br /&gt;
- [[Es:{{PAGENAMEE}}|Español]]&lt;br /&gt;
- [[Fa:{{PAGENAMEE}}|پارسی]]&lt;br /&gt;
- [[Fr:{{PAGENAMEE}}|Français]]&lt;br /&gt;
- [[Id:{{PAGENAMEE}}|Bahasa Indonesia]]&lt;br /&gt;
- [[It:{{PAGENAMEE}}|Italiano]]&lt;br /&gt;
- [[Pl:{{PAGENAMEE}}|Polski]]&lt;br /&gt;
- [[Pt:{{PAGENAMEE}}|Português]]&lt;br /&gt;
- [[Ru:{{PAGENAMEE}}|Русский]]&lt;br /&gt;
- [[Sq:{{PAGENAMEE}}|Shqip]]&lt;br /&gt;
- [[Sv:{{PAGENAMEE}}|Svenska]]&lt;br /&gt;
- [[Tr:{{PAGENAMEE}}|Türkçe]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/includeonly&amp;gt;&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:McGreen&amp;diff=29257</id>
		<title>User talk:McGreen</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:McGreen&amp;diff=29257"/>
		<updated>2014-02-09T20:12:09Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 20:12, 9 February 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:McGreen&amp;diff=29256</id>
		<title>User:McGreen</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:McGreen&amp;diff=29256"/>
		<updated>2014-02-09T20:12:09Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Just a guy who wants to spend some time in the Mana World.&lt;br /&gt;
Grown up in Gheenteld, a tiny village in the Lapragth district I - even though I&#039;m still young - went through quite some adventures.&lt;br /&gt;
If you&#039;re interested in my story, drop me a line and I&#039;ll gladly point you to a site that tells my story.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Falium&amp;diff=29255</id>
		<title>User talk:Falium</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Falium&amp;diff=29255"/>
		<updated>2014-02-09T20:11:14Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 20:11, 9 February 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Falium&amp;diff=29254</id>
		<title>User:Falium</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Falium&amp;diff=29254"/>
		<updated>2014-02-09T20:11:14Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Falium is a random person who likes to correct minor mistakes (spelling, typos, etc.) on wiki sites.&lt;br /&gt;
&lt;br /&gt;
This person has been interested in The Mana World for a few years, but only recently began playing on&lt;br /&gt;
the public server.&lt;br /&gt;
&lt;br /&gt;
Falium has an average typing speed of 54 WPM, with a peak of 98 WPM. (It depends&lt;br /&gt;
on whether or not the words are being transcribed or invented at the time of typing.)&lt;br /&gt;
&lt;br /&gt;
Falium believes that people who detonate explosive devices for a living must either &lt;br /&gt;
have a ton of fun doing it, or have no better source of income.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Camren&amp;diff=29253</id>
		<title>User talk:Camren</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Camren&amp;diff=29253"/>
		<updated>2014-02-09T20:10:42Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 20:10, 9 February 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Camren&amp;diff=29252</id>
		<title>User:Camren</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Camren&amp;diff=29252"/>
		<updated>2014-02-09T20:10:41Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;i would like to play with players i never curse im very nice and never ever begg for items and i also never spam. this game seems like a wonder full game to play i would also like to request this account because i need a mana market account so i may sell the items that i do not need.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Bhar&amp;diff=29250</id>
		<title>User talk:Bhar</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Bhar&amp;diff=29250"/>
		<updated>2014-02-09T20:10:28Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 20:10, 9 February 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Bhar&amp;diff=29249</id>
		<title>User:Bhar</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Bhar&amp;diff=29249"/>
		<updated>2014-02-09T20:10:27Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hi,&lt;br /&gt;
I played to The Mana World on 2009 and leave it for a time, now i&#039;m back and i&#039;m playing with a new account, well i want to have a new one here.&lt;br /&gt;
I come from France, i&#039;m 35 now… I don&#039;t know what to say more...&lt;br /&gt;
Thanks for the game, thanks for all.&lt;br /&gt;
Bruno (bhar)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Samuraiii&amp;diff=29248</id>
		<title>User talk:Samuraiii</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Samuraiii&amp;diff=29248"/>
		<updated>2014-02-09T20:10:18Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 20:10, 9 February 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Samuraiii&amp;diff=29247</id>
		<title>User:Samuraiii</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Samuraiii&amp;diff=29247"/>
		<updated>2014-02-09T20:10:18Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;I would like to to help translating pages of wiki to Czech. I am user and adorer of Open Source projects for ten years and Really like Mana World and wont to help by translating wiki and maybe also some time client and all other related strings in game.&lt;br /&gt;
Samuraiii&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Ametz&amp;diff=29246</id>
		<title>User talk:Ametz</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Ametz&amp;diff=29246"/>
		<updated>2014-02-09T20:10:01Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 20:10, 9 February 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Ametz&amp;diff=29245</id>
		<title>User:Ametz</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Ametz&amp;diff=29245"/>
		<updated>2014-02-09T20:10:01Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Male, Sweden, started playing The Mana World a few years ago, and just come back to play some more, lvl 73 +  a lvl 40+ ish.&lt;br /&gt;
My brother also play The Mana World nowdays and he likes it, alot have changed since i played last tho.&lt;br /&gt;
Like the map, more content and such.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Classic_talk:Monster_Design&amp;diff=29172</id>
		<title>Classic talk:Monster Design</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Classic_talk:Monster_Design&amp;diff=29172"/>
		<updated>2014-01-10T08:03:32Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* To do */ note stuff&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;===IRC, 19.12.2013, UTC+1===&lt;br /&gt;
(Irrelevant lines deleted)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;[09:23:22] &amp;lt;Cassy_at_work&amp;gt; o11c: btw can you please check the red marked text at the bottom of this page: https://wiki.themanaworld.org/index.php/Dev:Monster_Design&lt;br /&gt;
 ... I think that&#039;s a short look at it and it can be deleted (text in &amp;quot;expand&amp;quot;)&lt;br /&gt;
[09:37:49] &amp;lt;o11c&amp;gt; Cassy: mob stats are largely ignored ... I know LUK has an effect on crits, and there are a couple other things, but ...&lt;br /&gt;
[09:41:52] &amp;lt;o11c&amp;gt; Cassy: all the spoilered stuff is deletable, yeah&lt;br /&gt;
[09:43:32] &amp;lt;o11c&amp;gt; Cassy: detector and change target exist, but don&#039;t do anything (welcome to tmwa!)&lt;br /&gt;
[09:52:02] &amp;lt;Cassy_at_work&amp;gt; o11c: so for my notes on STR and VIT I can say those actually don&#039;t do anything?&lt;br /&gt;
[10:04:54] &amp;lt;o11c&amp;gt; Cassy_at_work: I&#039;m not actually sure about STR and VIT&lt;br /&gt;
[10:05:05] &amp;lt;o11c&amp;gt; combat calculations are kind of complicated&lt;br /&gt;
[10:06:10] &amp;lt;Cassy_at_work&amp;gt; o11c: oki, I&#039;ll just add a note there then that it&#039;s not sure what those do&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[User:Cassy|Cassy]] ([[User talk:Cassy|talk]]) 20:14, 20 December 2013 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===To do===&lt;br /&gt;
* &#039;&#039;&#039;LV&#039;&#039;&#039;: What real use does it have? It is added to dex for &amp;quot;to hit&amp;quot; and to agi for &amp;quot;flee&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;SP&#039;&#039;&#039;: What real use does it have? Should be &amp;quot;currently unused&amp;quot; as mobs don&#039;t use magic so far, but there are entries for Luvia (60) and ViciousSquirrel (1). Completely unused.&lt;br /&gt;
* &#039;&#039;&#039;EXP&#039;&#039;&#039;: Adding a link to the page on GitHub where it says how EXP is calculated. ?&lt;br /&gt;
* &#039;&#039;&#039;JEXP&#039;&#039;&#039;: Adding some information about that tool that calculates it for you. make mobxp?&lt;br /&gt;
* &#039;&#039;&#039;LUK&#039;&#039;&#039;: What are perfect dodge, lucky flee and perfect flee? Various combat chances - show in client as &amp;quot;miss&amp;quot; and &amp;quot;dodge&amp;quot;.&lt;br /&gt;
* &#039;&#039;&#039;Scale&#039;&#039;&#039;: What does it do? Absolutely nothing.&lt;br /&gt;
* &#039;&#039;&#039;Amotion&#039;&#039;&#039;: Is sent to client. Appears in one calculation regarding mobs in the &amp;quot;attack&amp;quot; state, setting &amp;quot;attackable time&amp;quot;. Note that &#039;&#039;&#039;Adelay&#039;&#039;&#039; sets &amp;quot;think time&amp;quot; instead. I&#039;m not sure exactly what either of those mean.&lt;br /&gt;
* &#039;&#039;&#039;Dmotion&#039;&#039;&#039;: Is sent to client. Used to set canmove_tick.&lt;br /&gt;
* &#039;&#039;&#039;Item1&#039;&#039;&#039;: unused&lt;br /&gt;
* &#039;&#039;&#039;Item2&#039;&#039;&#039;: unused&lt;br /&gt;
* &#039;&#039;&#039;MEXP&#039;&#039;&#039;: unused&lt;br /&gt;
* &#039;&#039;&#039;ExpPer&#039;&#039;&#039;: unused&lt;br /&gt;
* &#039;&#039;&#039;MVP1id&#039;&#039;&#039;: unused&lt;br /&gt;
* &#039;&#039;&#039;MVP1per&#039;&#039;&#039;: unused&lt;br /&gt;
* &#039;&#039;&#039;mutationcount&#039;&#039;&#039;: Which attributes can increase?&lt;br /&gt;
LV, MAX_HP, STR, AGI, VIT, INT, DEX, LUK, ATK1, ATK2, ADELAY, DEF, MDEF, SPEED, MAX_HP // double chance to modify hp, no chance to modify xp_base&lt;br /&gt;
* everything saying &amp;quot;&#039;&#039;(follows)&#039;&#039;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[User:Cassy|Cassy]] ([[User talk:Cassy|talk]]) 12:29, 8 January 2014 (UTC)&lt;br /&gt;
&lt;br /&gt;
Updated. [[User:Cassy|Cassy]] ([[User talk:Cassy|talk]]) 14:48, 9 January 2014 (UTC)&lt;br /&gt;
Edited. [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 08:03, 10 January 2014 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Development:How_to_Develop&amp;diff=29153</id>
		<title>Development:How to Develop</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Development:How_to_Develop&amp;diff=29153"/>
		<updated>2014-01-02T05:42:04Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* Install Dependencies */ Add &amp;#039;realpath&amp;#039; package to list; not everybody has it by default.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We&#039;re using Git as version control system for our source files and content. Have a look at our [[Working With Git|Tutorial]] about how to use Git. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Set Up=&lt;br /&gt;
This is a how to help content development for official server (tmwAthena) using Ubuntu and the Mana client. Other OS and clients may differ. Following this guide, you should be able to get development testing versions of the client data (tmwa-client-data), server-data (tmwa-server-data) and participate in development by using a localhost server. After getting these, you can both test current development and begin development in the direction you find most fitting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Install Dependencies==&lt;br /&gt;
In addition to the basic build tools (GCC, Make, headers, ...), [http://www.gnu.org/software/bison/ &#039;&#039;&#039;Bison&#039;&#039;&#039;], and [http://sourceforge.net/projects/flex/ &#039;&#039;&#039;Flex&#039;&#039;&#039;] are needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [http://www.debian.org/index.html Debian] derivates (including [http://www.ubuntu.com/ Ubuntu])&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo apt-get install g++ flex bison python make realpath&lt;br /&gt;
&lt;br /&gt;
Note that you must have gcc 4.6 or later. Any modern distro will have this version, but &amp;quot;stable&amp;quot; distros with very long release cycles, such as Red Hat Enterprise Linux, might not.&lt;br /&gt;
&lt;br /&gt;
==Set Up Own Server==&lt;br /&gt;
&#039;&#039;&#039;Here are the steps to use when creating a new local testing server.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  mkdir ~/tmwAthena&lt;br /&gt;
  cd ~/tmwAthena/&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa.git&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa-server-data.git&lt;br /&gt;
  cd tmwa/&lt;br /&gt;
  ./configure --user # &#039;&#039;Assuming ~/bin is in your PATH)&#039;&#039;&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  git config --global url.git@github.com:.pushInsteadOf git://github.com &#039;&#039;{{ref|push}} {{ref|once}}&#039;&#039;&lt;br /&gt;
  cd ../tmwa-server-data&lt;br /&gt;
* Preferably, add the update hooks.&lt;br /&gt;
  ln -s ../../git/hooks/post-merge .git/hooks/&lt;br /&gt;
  ln -s ../../../../git/hooks/post-merge .git/modules/client-data/hooks/ # &#039;&#039;(git 1.7.8 or newer)&#039;&#039;&lt;br /&gt;
  ln -s ../../../git/hooks/post-merge client-data/.git/hooks/ # &#039;&#039;(git 1.7.7 or older)&#039;&#039;&lt;br /&gt;
  make conf&lt;br /&gt;
  cd client-data&lt;br /&gt;
  git checkout master&lt;br /&gt;
  cd music&lt;br /&gt;
  git checkout master&lt;br /&gt;
&lt;br /&gt;
==Hosting Updates==&lt;br /&gt;
TMW makes it easy to generate delta zips out of a repository, once it is initially set up.&lt;br /&gt;
&lt;br /&gt;
It will put them in ~/www/updates/, which may be a symlink to wherever your web server is really serving. Setting up a webserver is not covered here.&lt;br /&gt;
&lt;br /&gt;
Once everything is set up, just run &#039;make updates&#039; from the server-data dir every time client-data changes. It will do nothing if appropriate, generate complete zips the first time, and incremental zips afterwards.&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* You must put news.txt and skeleton resources.xml file (and maybe an empty resources2.txt) in ~/www/updates/ first.&lt;br /&gt;
* Music updates are never added; they should be in the skeleton and updated manually if needed.&lt;br /&gt;
* You definitely want to run one of the analyzer scripts frequently, and remove the old updates.&lt;br /&gt;
&lt;br /&gt;
==Updating the Server==&lt;br /&gt;
&lt;br /&gt;
==  Running and Administrating the Server ==&lt;br /&gt;
&lt;br /&gt;
The TMWAthena is in fact 3 servers:&lt;br /&gt;
* &#039;&#039;&#039;tmwa-login&#039;&#039;&#039; which manages accounts and connection to char server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-char&#039;&#039;&#039; which manages  characters and connects them to the map server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-map&#039;&#039;&#039; which manages game content (maps, monsters, items, scripts...) and their interaction with characters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Start the servers: Open a terminal and run all the local servers. To stop them, either close the terminal or type control-C.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
  ./run-all&lt;br /&gt;
* In a new terminal, Launch &#039;&#039;&#039;tmwa-admin&#039;&#039;&#039; the administration tool, add yourself as an user and make yourself a GM:&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login&lt;br /&gt;
 tmwa-admin&lt;br /&gt;
 add &amp;lt;username&amp;gt; M &amp;lt;password&amp;gt; &lt;br /&gt;
 gm &amp;lt;username&amp;gt; 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; : Be sure that you are running tmwa-admin from within the &amp;quot;login/&amp;quot; directory. Check that the config files are correct: the connection port should be 6901 for tmwa&#039;s configuration, not 6900, which is the hard-coded default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See also:&#039;&#039;&#039; [[GM Commands]]&lt;br /&gt;
&lt;br /&gt;
== Connecting ==&lt;br /&gt;
# Open a command line terminal and run your client pointing to your client data and your local server :&lt;br /&gt;
  manaplus --server localhost --port 6901 -u -d ~/tmwAthena/tmwa-server-data/client-data&lt;br /&gt;
or&lt;br /&gt;
  mana --server localhost --port 6901 -u -d ~/tmwAthena/tmwa-server-data/client-data&lt;br /&gt;
&lt;br /&gt;
If all went well, you are now ready to test new content and participate with development.&lt;br /&gt;
&lt;br /&gt;
== develop new content==&lt;br /&gt;
&#039;&#039;&#039;You are now free to do some changes, first close the client and your servers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Notes for client data changes: 1) commit and push them in the client-data repo 2) commit and push &amp;quot;client-data&amp;quot; when it shows &amp;quot;(new commits)&amp;quot; in your server-data 3) commit and push other server data changes.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Make your modifications (e.g. Change a map) and save them.&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/client-data&#039;&#039;&lt;br /&gt;
  git status&#039;&#039;&lt;br /&gt;
  git add [modified files]&#039;&#039;&lt;br /&gt;
  git commit&#039;&#039;&lt;br /&gt;
  git push&#039;&#039; {{note|push}}&lt;br /&gt;
  cd ..&lt;br /&gt;
  make maps &#039;&#039;(if you changed a map)&#039;&#039;&lt;br /&gt;
  git status&lt;br /&gt;
  git add [modified files]&lt;br /&gt;
  git add client-data (if &#039;&#039;git status&#039;&#039; shows &#039;&#039;(new commits)&#039;&#039;. &#039;&#039;&#039;Don&#039;t do this if you don&#039;t have push access to client-data!&#039;&#039;&#039;)&lt;br /&gt;
  git commit&lt;br /&gt;
  git push {{note|push}}&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
{{note|push}} : a step for those with commit access to the remote repositories.  For others, you don&#039;t need to reconfigure your clone and please make a patch on steps where &#039;&#039;git push&#039;&#039; is suggested.  &lt;br /&gt;
&lt;br /&gt;
{{note|once}} : you only need to do this once, no matter how many times you independently clone the repositories.&lt;br /&gt;
&lt;br /&gt;
  git format-patch -M -C origin/master&lt;br /&gt;
* pastebin the patch(es) and post for review at irc.freenode.net channel: #themanaworld-dev or on our [http://forums.themanaworld.org/viewforum.php?f=18 development forums]. &#039;&#039;&#039;Extensive patches must be posted on the forum as a series of well-formed patches with descriptive commit messages.&#039;&#039;&#039; In particular, later patches should not fix errors introduced in earlier patches, and each patch should form a logically independent part.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; &#039;&#039;&#039;Note :&#039;&#039;&#039; This is kind of outdated; with github it&#039;s often easier to do patches on branches there. see: &#039;&#039;&#039;[[Working With Git]]&#039;&#039;&#039; page&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can also pull the data which has been modified.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data&lt;br /&gt;
 git pull&lt;br /&gt;
* If you haven&#039;t installed the hook, &lt;br /&gt;
 git submodule update --merge  &#039;&#039;at toplevel (for client-data) and in client-data (for music)&#039;&#039;&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See Also:&#039;&#039;&#039; [http://wiki.themanaworld.org/images/3/33/README.mv.txt README.mv.txt] - Documentation on using git submodules, like client-data and tmw-music.&lt;br /&gt;
&lt;br /&gt;
=Making Content=&lt;br /&gt;
==Making Map Content==&lt;br /&gt;
See [[Mapping Tutorial]].&lt;br /&gt;
===Python Converter Tool===&lt;br /&gt;
After editing maps for the client, you need to generate the walkmaps and imports for the server. yhis can be done either by the &#039;&#039;&#039;[[Tiled]]&#039;&#039;&#039; application or by running the python script &#039;&#039;&#039;tmx_converter.py&#039;&#039;&#039; which is located in the &#039;&#039;&#039;tools&#039;&#039;&#039; folder of the &#039;&#039;&#039;Server Data&#039;&#039;&#039; folder.&lt;br /&gt;
(see [[Mapping Tutorial#Creating the WLK files]])&lt;br /&gt;
After that, commit and push the files that the converter edited. Note that, if you do not have push access to the main repository, you should let someone else update the submodule itself.&lt;br /&gt;
&lt;br /&gt;
==Getting Art Content Into The Game==&lt;br /&gt;
* Post [CPT] or [WIP] art on the [http://forums.themanaworld.org/viewforum.php?f=8 graphics development forum].&lt;br /&gt;
* Work with the Art Director and collaborators on getting the art consistent.&lt;br /&gt;
* When finished, edit topic as [FND].&lt;br /&gt;
* Art Director approves [FND] art and marks it [RC].  Should the art need animation or special effect, the Art Director requests xml for it.  If not, the Art Director commits it and marks as [GIT].&lt;br /&gt;
* XML Team reviews or drafts xml related to the art, then commits the .png and .xml.  Topic can be marked as [GIT].&lt;br /&gt;
::* Art content affected: client-data/graphics/sprites then related directory for .png and .xml animation addition.&lt;br /&gt;
* Project developer requests database entry reservations from a General Content Team developer.&lt;br /&gt;
::* Map entry server data affected: resnametable.txt and .wlk files in the data directory, map content files in the npc directory.&lt;br /&gt;
::* Map entry client data affected: .tmx files in the maps directory.&lt;br /&gt;
::* Map entry requires the running of the .tmx converter (aka java converter) before commits can be made.&lt;br /&gt;
::* Art content server data affected: entry made in the item_db.txt, mob_db.txt or mob_skills_db.txt in the db directory.&lt;br /&gt;
::* Art content client data affected: entry added in items.xml, monsters.xml or other identification file.&lt;br /&gt;
&lt;br /&gt;
===Handling General Content Team [REQ]s===&lt;br /&gt;
* General Content Team member adds a [REQ] topic to the graphics development forum.&lt;br /&gt;
* General Content Team member adds the [REQ] topic as a hyperlink under &amp;quot;Required Art&amp;quot; on the [[Art in Development]] page.&lt;br /&gt;
* Art Director attempts to network with other artists to assign the art to an artist.&lt;br /&gt;
&lt;br /&gt;
==Bit Masking==&lt;br /&gt;
Bit Masking helps us reduce our variable count while offering a dynamic method of script writing that is versatile and flexible to both linear and non-linear script writing. &lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/6520164/tester1.txt Bit Masking Test Script]&lt;br /&gt;
&lt;br /&gt;
==Generating client updates==&lt;br /&gt;
* Shutdown all your servers.&lt;br /&gt;
&lt;br /&gt;
* First we are going to check the config files to be sure the paths are correct.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 add-git-attributes  edit-all-to-export-tilesets.sh  formatXML.sh  list-tileset-order  map-db.py       minimap-render.py&lt;br /&gt;
 adler32             edit-map-tileset-names.sh       indent.xsl    make-updates        map-diff.py&lt;br /&gt;
 End of output &lt;br /&gt;
&lt;br /&gt;
* The easiest solution is to create a symbolic link to that directory &lt;br /&gt;
ln -s /var/www/tmwupdates ~/www/updates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
* You can Edit the make-updates file with gedit or nano or vi.&lt;br /&gt;
Search for the folowing lines:&lt;br /&gt;
output=~/www/updates&lt;br /&gt;
And change them to:&lt;br /&gt;
output=/var/www/tmwupdates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login/conf&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 ladmin_athena.conf         lan_support.conf   login_local.conf.example &lt;br /&gt;
 ladmin_local.conf          login_athena.conf &lt;br /&gt;
 ladmin_local.conf.example  login_local.conf &lt;br /&gt;
 End of output&lt;br /&gt;
&lt;br /&gt;
*Edit the login_local.conf with an editor and look for the following line:&lt;br /&gt;
 update_host: http://updates.themanaworld.org/&lt;br /&gt;
*Change that line to:&lt;br /&gt;
 update_host: http://127.0.0.1/tmwupdates/ (or use your external ip)&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 &lt;br /&gt;
* Open a terminal. &lt;br /&gt;
First we compile the adler32 tool to generate a hash.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/adler32/ &lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 Output must be: &lt;br /&gt;
 gcc -lz -o adler32 adler32.c&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
* Now that we compiled the adler tool we can make us a update.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;br /&gt;
&lt;br /&gt;
* Each time you want to make new updates&lt;br /&gt;
 make sure you have a new commit then&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Development:How_to_Develop&amp;diff=29120</id>
		<title>Development:How to Develop</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Development:How_to_Develop&amp;diff=29120"/>
		<updated>2013-12-22T03:13:16Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* Set Up Own Server */ make the configure notes less confusing, especially with recent changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;We&#039;re using Git as version control system for our source files and content. Have a look at our [[Working With Git|Tutorial]] about how to use Git. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Set Up=&lt;br /&gt;
This is a how to help content development for official server (tmwAthena) using Ubuntu and the Mana client. Other OS and clients may differ. Following this guide, you should be able to get development testing versions of the client data (tmwa-client-data), server-data (tmwa-server-data) and participate in development by using a localhost server. After getting these, you can both test current development and begin development in the direction you find most fitting.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Install Dependencies==&lt;br /&gt;
In addition to the basic build tools (GCC, Make, headers, ...), [http://www.gnu.org/software/bison/ &#039;&#039;&#039;Bison&#039;&#039;&#039;], and [http://sourceforge.net/projects/flex/ &#039;&#039;&#039;Flex&#039;&#039;&#039;] are needed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;  [http://www.debian.org/index.html Debian] derivates (including [http://www.ubuntu.com/ Ubuntu])&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 sudo apt-get install g++ flex bison python make&lt;br /&gt;
&lt;br /&gt;
Note that you must have gcc 4.6 or later. Any modern distro will have this version, but &amp;quot;stable&amp;quot; distros with very long release cycles, such as Red Hat Enterprise Linux, might not.&lt;br /&gt;
&lt;br /&gt;
==Set Up Own Server==&lt;br /&gt;
&#039;&#039;&#039;Here are the steps to use when creating a new local testing server.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  mkdir ~/tmwAthena&lt;br /&gt;
  cd ~/tmwAthena/&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa.git&lt;br /&gt;
  git clone --recursive git://github.com/themanaworld/tmwa-server-data.git&lt;br /&gt;
  cd tmwa/&lt;br /&gt;
  ./configure --user # &#039;&#039;Assuming ~/bin is in your PATH)&#039;&#039;&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  git config --global url.git@github.com:.pushInsteadOf git://github.com &#039;&#039;{{ref|push}} {{ref|once}}&#039;&#039;&lt;br /&gt;
  cd ../tmwa-server-data&lt;br /&gt;
* Preferably, add the update hooks.&lt;br /&gt;
  ln -s ../../git/hooks/post-merge .git/hooks/&lt;br /&gt;
  ln -s ../../../../git/hooks/post-merge .git/modules/client-data/hooks/ # &#039;&#039;(git 1.7.8 or newer)&#039;&#039;&lt;br /&gt;
  ln -s ../../../git/hooks/post-merge client-data/.git/hooks/ # &#039;&#039;(git 1.7.7 or older)&#039;&#039;&lt;br /&gt;
  make conf&lt;br /&gt;
  cd client-data&lt;br /&gt;
  git checkout master&lt;br /&gt;
  cd music&lt;br /&gt;
  git checkout master&lt;br /&gt;
&lt;br /&gt;
==Hosting Updates==&lt;br /&gt;
TMW makes it easy to generate delta zips out of a repository, once it is initially set up.&lt;br /&gt;
&lt;br /&gt;
It will put them in ~/www/updates/, which may be a symlink to wherever your web server is really serving. Setting up a webserver is not covered here.&lt;br /&gt;
&lt;br /&gt;
Once everything is set up, just run &#039;make updates&#039; from the server-data dir every time client-data changes. It will do nothing if appropriate, generate complete zips the first time, and incremental zips afterwards.&lt;br /&gt;
&lt;br /&gt;
Some notes:&lt;br /&gt;
* You must put news.txt and skeleton resources.xml file (and maybe an empty resources2.txt) in ~/www/updates/ first.&lt;br /&gt;
* Music updates are never added; they should be in the skeleton and updated manually if needed.&lt;br /&gt;
* You definitely want to run one of the analyzer scripts frequently, and remove the old updates.&lt;br /&gt;
&lt;br /&gt;
==Updating the Server==&lt;br /&gt;
&lt;br /&gt;
==  Running and Administrating the Server ==&lt;br /&gt;
&lt;br /&gt;
The TMWAthena is in fact 3 servers:&lt;br /&gt;
* &#039;&#039;&#039;tmwa-login&#039;&#039;&#039; which manages accounts and connection to char server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-char&#039;&#039;&#039; which manages  characters and connects them to the map server.&lt;br /&gt;
* &#039;&#039;&#039;tmwa-map&#039;&#039;&#039; which manages game content (maps, monsters, items, scripts...) and their interaction with characters&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Start the servers: Open a terminal and run all the local servers. To stop them, either close the terminal or type control-C.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
  ./run-all&lt;br /&gt;
* In a new terminal, Launch &#039;&#039;&#039;tmwa-admin&#039;&#039;&#039; the administration tool, add yourself as an user and make yourself a GM:&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login&lt;br /&gt;
 tmwa-admin&lt;br /&gt;
 add &amp;lt;username&amp;gt; M &amp;lt;password&amp;gt; &lt;br /&gt;
 gm &amp;lt;username&amp;gt; 99&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039; : Be sure that you are running tmwa-admin from within the &amp;quot;login/&amp;quot; directory. Check that the config files are correct: the connection port should be 6901 for tmwa&#039;s configuration, not 6900, which is the hard-coded default.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See also:&#039;&#039;&#039; [[GM Commands]]&lt;br /&gt;
&lt;br /&gt;
== Connecting ==&lt;br /&gt;
# Open a command line terminal and run your client pointing to your client data and your local server :&lt;br /&gt;
  manaplus --server localhost --port 6901 -u -d ~/tmwAthena/tmwa-server-data/client-data&lt;br /&gt;
or&lt;br /&gt;
  mana --server localhost --port 6901 -u -d ~/tmwAthena/tmwa-server-data/client-data&lt;br /&gt;
&lt;br /&gt;
If all went well, you are now ready to test new content and participate with development.&lt;br /&gt;
&lt;br /&gt;
== develop new content==&lt;br /&gt;
&#039;&#039;&#039;You are now free to do some changes, first close the client and your servers.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;&#039;&#039;Notes for client data changes: 1) commit and push them in the client-data repo 2) commit and push &amp;quot;client-data&amp;quot; when it shows &amp;quot;(new commits)&amp;quot; in your server-data 3) commit and push other server data changes.&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
* Make your modifications (e.g. Change a map) and save them.&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
  cd ~/tmwAthena/tmwa-server-data/client-data&#039;&#039;&lt;br /&gt;
  git status&#039;&#039;&lt;br /&gt;
  git add [modified files]&#039;&#039;&lt;br /&gt;
  git commit&#039;&#039;&lt;br /&gt;
  git push&#039;&#039; {{note|push}}&lt;br /&gt;
  cd ..&lt;br /&gt;
  make maps &#039;&#039;(if you changed a map)&#039;&#039;&lt;br /&gt;
  git status&lt;br /&gt;
  git add [modified files]&lt;br /&gt;
  git add client-data (if &#039;&#039;git status&#039;&#039; shows &#039;&#039;(new commits)&#039;&#039;. &#039;&#039;&#039;Don&#039;t do this if you don&#039;t have push access to client-data!&#039;&#039;&#039;)&lt;br /&gt;
  git commit&lt;br /&gt;
  git push {{note|push}}&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
{{note|push}} : a step for those with commit access to the remote repositories.  For others, you don&#039;t need to reconfigure your clone and please make a patch on steps where &#039;&#039;git push&#039;&#039; is suggested.  &lt;br /&gt;
&lt;br /&gt;
{{note|once}} : you only need to do this once, no matter how many times you independently clone the repositories.&lt;br /&gt;
&lt;br /&gt;
  git format-patch -M -C origin/master&lt;br /&gt;
* pastebin the patch(es) and post for review at irc.freenode.net channel: #themanaworld-dev or on our [http://forums.themanaworld.org/viewforum.php?f=18 development forums]. &#039;&#039;&#039;Extensive patches must be posted on the forum as a series of well-formed patches with descriptive commit messages.&#039;&#039;&#039; In particular, later patches should not fix errors introduced in earlier patches, and each patch should form a logically independent part.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color:#FF0000&amp;quot;&amp;gt; &#039;&#039;&#039;Note :&#039;&#039;&#039; This is kind of outdated; with github it&#039;s often easier to do patches on branches there. see: &#039;&#039;&#039;[[Working With Git]]&#039;&#039;&#039; page&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You can also pull the data which has been modified.&#039;&#039;&#039;&lt;br /&gt;
* Open a terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data&lt;br /&gt;
 git pull&lt;br /&gt;
* If you haven&#039;t installed the hook, &lt;br /&gt;
 git submodule update --merge  &#039;&#039;at toplevel (for client-data) and in client-data (for music)&#039;&#039;&lt;br /&gt;
* Close the terminal.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;See Also:&#039;&#039;&#039; [http://wiki.themanaworld.org/images/3/33/README.mv.txt README.mv.txt] - Documentation on using git submodules, like client-data and tmw-music.&lt;br /&gt;
&lt;br /&gt;
=Making Content=&lt;br /&gt;
==Making Map Content==&lt;br /&gt;
See [[Mapping Tutorial]].&lt;br /&gt;
===Python Converter Tool===&lt;br /&gt;
After editing maps for the client, you need to generate the walkmaps and imports for the server. yhis can be done either by the &#039;&#039;&#039;[[Tiled]]&#039;&#039;&#039; application or by running the python script &#039;&#039;&#039;tmx_converter.py&#039;&#039;&#039; which is located in the &#039;&#039;&#039;tools&#039;&#039;&#039; folder of the &#039;&#039;&#039;Server Data&#039;&#039;&#039; folder.&lt;br /&gt;
(see [[Mapping Tutorial#Creating the WLK files]])&lt;br /&gt;
After that, commit and push the files that the converter edited. Note that, if you do not have push access to the main repository, you should let someone else update the submodule itself.&lt;br /&gt;
&lt;br /&gt;
==Getting Art Content Into The Game==&lt;br /&gt;
* Post [CPT] or [WIP] art on the [http://forums.themanaworld.org/viewforum.php?f=8 graphics development forum].&lt;br /&gt;
* Work with the Art Director and collaborators on getting the art consistent.&lt;br /&gt;
* When finished, edit topic as [FND].&lt;br /&gt;
* Art Director approves [FND] art and marks it [RC].  Should the art need animation or special effect, the Art Director requests xml for it.  If not, the Art Director commits it and marks as [GIT].&lt;br /&gt;
* XML Team reviews or drafts xml related to the art, then commits the .png and .xml.  Topic can be marked as [GIT].&lt;br /&gt;
::* Art content affected: client-data/graphics/sprites then related directory for .png and .xml animation addition.&lt;br /&gt;
* Project developer requests database entry reservations from a General Content Team developer.&lt;br /&gt;
::* Map entry server data affected: resnametable.txt and .wlk files in the data directory, map content files in the npc directory.&lt;br /&gt;
::* Map entry client data affected: .tmx files in the maps directory.&lt;br /&gt;
::* Map entry requires the running of the .tmx converter (aka java converter) before commits can be made.&lt;br /&gt;
::* Art content server data affected: entry made in the item_db.txt, mob_db.txt or mob_skills_db.txt in the db directory.&lt;br /&gt;
::* Art content client data affected: entry added in items.xml, monsters.xml or other identification file.&lt;br /&gt;
&lt;br /&gt;
===Handling General Content Team [REQ]s===&lt;br /&gt;
* General Content Team member adds a [REQ] topic to the graphics development forum.&lt;br /&gt;
* General Content Team member adds the [REQ] topic as a hyperlink under &amp;quot;Required Art&amp;quot; on the [[Art in Development]] page.&lt;br /&gt;
* Art Director attempts to network with other artists to assign the art to an artist.&lt;br /&gt;
&lt;br /&gt;
==Bit Masking==&lt;br /&gt;
Bit Masking helps us reduce our variable count while offering a dynamic method of script writing that is versatile and flexible to both linear and non-linear script writing. &lt;br /&gt;
&lt;br /&gt;
[http://dl.dropbox.com/u/6520164/tester1.txt Bit Masking Test Script]&lt;br /&gt;
&lt;br /&gt;
==Generating client updates==&lt;br /&gt;
* Shutdown all your servers.&lt;br /&gt;
&lt;br /&gt;
* First we are going to check the config files to be sure the paths are correct.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 add-git-attributes  edit-all-to-export-tilesets.sh  formatXML.sh  list-tileset-order  map-db.py       minimap-render.py&lt;br /&gt;
 adler32             edit-map-tileset-names.sh       indent.xsl    make-updates        map-diff.py&lt;br /&gt;
 End of output &lt;br /&gt;
&lt;br /&gt;
* The easiest solution is to create a symbolic link to that directory &lt;br /&gt;
ln -s /var/www/tmwupdates ~/www/updates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
* You can Edit the make-updates file with gedit or nano or vi.&lt;br /&gt;
Search for the folowing lines:&lt;br /&gt;
output=~/www/updates&lt;br /&gt;
And change them to:&lt;br /&gt;
output=/var/www/tmwupdates (your public www folder is /tmwupdates)&lt;br /&gt;
&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/login/conf&lt;br /&gt;
 ls&lt;br /&gt;
&lt;br /&gt;
 Output:&lt;br /&gt;
 ladmin_athena.conf         lan_support.conf   login_local.conf.example &lt;br /&gt;
 ladmin_local.conf          login_athena.conf &lt;br /&gt;
 ladmin_local.conf.example  login_local.conf &lt;br /&gt;
 End of output&lt;br /&gt;
&lt;br /&gt;
*Edit the login_local.conf with an editor and look for the following line:&lt;br /&gt;
 update_host: http://updates.themanaworld.org/&lt;br /&gt;
*Change that line to:&lt;br /&gt;
 update_host: http://127.0.0.1/tmwupdates/ (or use your external ip)&lt;br /&gt;
*Save the file and get back in the terminal.&lt;br /&gt;
 &lt;br /&gt;
* Open a terminal. &lt;br /&gt;
First we compile the adler32 tool to generate a hash.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/client-data/tools/adler32/ &lt;br /&gt;
 make&lt;br /&gt;
&lt;br /&gt;
 Output must be: &lt;br /&gt;
 gcc -lz -o adler32 adler32.c&lt;br /&gt;
&lt;br /&gt;
 make install&lt;br /&gt;
&lt;br /&gt;
* Now that we compiled the adler tool we can make us a update.&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;br /&gt;
&lt;br /&gt;
* Each time you want to make new updates&lt;br /&gt;
 make sure you have a new commit then&lt;br /&gt;
 cd ~/tmwAthena/tmwa-server-data/&lt;br /&gt;
 make updates&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Template:Packet&amp;diff=29119</id>
		<title>Template:Packet</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Template:Packet&amp;diff=29119"/>
		<updated>2013-12-21T20:35:21Z</updated>

		<summary type="html">&lt;p&gt;O11c: typo (templates are hard)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch: {{{mode}}}&lt;br /&gt;
| row =&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt; &amp;lt;td&amp;gt; [[Net:{{{id}}}|{{{id}}}]] &amp;lt;/td&amp;gt; &amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt; {{{length}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{nicename}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{define}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sent: {{{sent}}} &amp;lt;br/&amp;gt; Parsed: {{{parsed}}} &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
| row_internal =&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt; &amp;lt;td&amp;gt; [[Net:{{{id}}}|{{{id}}}]] &amp;lt;/td&amp;gt; &amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt; {{{length}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{nicename}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sent: {{{sent}}} &amp;lt;br/&amp;gt; Parsed: {{{parsed}}} &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
| #default =&lt;br /&gt;
[[Dev:TmwAthena Packets|&amp;lt; Back]]&lt;br /&gt;
==={{{nicename}}}===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border: dashed 1px #aac&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Packet ID:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;[[Net:{{{id}}}|{{{id}}}]]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Packet Length:&amp;lt;/th&amp;gt;&amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt;{{{length}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Client Defined:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{define}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Sent Location(s):&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{sent}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Parsed Location(s):&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{parsed}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Offset&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Length&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Contents&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
{{{fields}}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
{{{description}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Template:Packet&amp;diff=29118</id>
		<title>Template:Packet</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Template:Packet&amp;diff=29118"/>
		<updated>2013-12-21T20:34:48Z</updated>

		<summary type="html">&lt;p&gt;O11c: make it a link too &amp;lt;/facepalm&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch: {{{mode}}}&lt;br /&gt;
| row =&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt; &amp;lt;td&amp;gt; [[Net:{{{id}}}|{{{id}}}]] &amp;lt;/td&amp;gt; &amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt; {{{length}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{nicename}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{define}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sent: {{{sent}}} &amp;lt;br/&amp;gt; Parsed: {{{parsed}}} &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
| row_internal =&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt; &amp;lt;td&amp;gt; [[Net:{{{id}}}|{{{id}}}]] &amp;lt;/td&amp;gt; &amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt; {{{length}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{nicename}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sent: {{{sent}}} &amp;lt;br/&amp;gt; Parsed: {{{parsed}}} &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
| #default =&lt;br /&gt;
[[Dev:TmwAthena Packets|&amp;lt; Back]]&lt;br /&gt;
==={{{nicename}}}===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border: dashed 1px #aac&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Packet ID:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;[[Net:{{{id}}}|{{{id}}}]&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Packet Length:&amp;lt;/th&amp;gt;&amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt;{{{length}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Client Defined:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{define}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Sent Location(s):&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{sent}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Parsed Location(s):&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{parsed}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Offset&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Length&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Contents&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
{{{fields}}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
{{{description}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Template:Packet&amp;diff=29117</id>
		<title>Template:Packet</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Template:Packet&amp;diff=29117"/>
		<updated>2013-12-21T20:33:01Z</updated>

		<summary type="html">&lt;p&gt;O11c: add id to make errors obvious&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#switch: {{{mode}}}&lt;br /&gt;
| row =&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt; &amp;lt;td&amp;gt; [[Net:{{{id}}}|{{{id}}}]] &amp;lt;/td&amp;gt; &amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt; {{{length}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{nicename}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{define}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sent: {{{sent}}} &amp;lt;br/&amp;gt; Parsed: {{{parsed}}} &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
| row_internal =&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt; &amp;lt;td&amp;gt; [[Net:{{{id}}}|{{{id}}}]] &amp;lt;/td&amp;gt; &amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt; {{{length}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; {{{nicename}}} &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; Sent: {{{sent}}} &amp;lt;br/&amp;gt; Parsed: {{{parsed}}} &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
| #default =&lt;br /&gt;
[[Dev:TmwAthena Packets|&amp;lt; Back]]&lt;br /&gt;
==={{{nicename}}}===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border: dashed 1px #aac&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Packet ID:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{id}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Packet Length:&amp;lt;/th&amp;gt;&amp;lt;td style=&amp;quot;background: {{{alignment|purple}}}&amp;quot;&amp;gt;{{{length}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Client Defined:&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{define}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Sent Location(s):&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{sent}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
  &amp;lt;tr&amp;gt;&amp;lt;th style=&amp;quot;text-align: right&amp;quot;&amp;gt;Parsed Location(s):&amp;lt;/th&amp;gt;&amp;lt;td&amp;gt;{{{parsed}}}&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Fields ===&lt;br /&gt;
&amp;lt;table style=&amp;quot;border-collapse: collapse;&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;
  &amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Offset&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Length&amp;lt;/th&amp;gt;&lt;br /&gt;
    &amp;lt;th style=&amp;quot;text-align: left; font-weight: normal; border-bottom: solid 1px #888;padding-right:12px;&amp;quot;&amp;gt;Contents&amp;lt;/th&amp;gt;&lt;br /&gt;
  &amp;lt;/tr&amp;gt;&lt;br /&gt;
{{{fields}}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
{{{description}}}&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Net:0x006B&amp;diff=29090</id>
		<title>Net:0x006B</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Net:0x006B&amp;diff=29090"/>
		<updated>2013-12-16T21:19:14Z</updated>

		<summary type="html">&lt;p&gt;O11c: fix packet number&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{packet&lt;br /&gt;
|nicename=Update Character List&lt;br /&gt;
|id=0x006B&lt;br /&gt;
|mode={{{mode}}}&lt;br /&gt;
|length=-1&lt;br /&gt;
|alignment=orangered&lt;br /&gt;
|define=SMSG_CHAR_LOGIN&lt;br /&gt;
|sent={{tmwa location|src/char/char.cpp}}&lt;br /&gt;
|parsed={{mana location|src/net/tmwa/charserverhandler.cpp|77}}&lt;br /&gt;
|fields=&lt;br /&gt;
{{packet field | 0 | 2 | Packet ID }}&lt;br /&gt;
{{packet field | 2 | 2 | Packet Length (24 + (106 * CharacterCount) + 0) }}&lt;br /&gt;
{{packet field | 4 | 20 | &#039;&#039;Unused&#039;&#039; }}&lt;br /&gt;
{{packet field | &amp;lt;br/&amp;gt;&amp;lt;hr/&amp;gt;  | &amp;lt;br/&amp;gt;&amp;lt;hr/&amp;gt;  | &amp;lt;strong&amp;gt;Character Subpacket&amp;lt;/strong&amp;gt; (Repeated for each character, see also [[Net:0x006D]])&amp;lt;hr/&amp;gt; }}&lt;br /&gt;
{{packet field |  X+0 | 4 | char id }}&lt;br /&gt;
{{packet field |  X+4 | 4 | exp }}&lt;br /&gt;
{{packet field |  X+8 | 4 | zeny }}&lt;br /&gt;
{{packet field |  X+12 | 4 | job xp }}&lt;br /&gt;
{{packet field |  X+16 | 4 | job level }}&lt;br /&gt;
{{packet field |  X+20 | 2 | shoes }}&lt;br /&gt;
{{packet field |  X+22 | 2 | gloves }}&lt;br /&gt;
{{packet field |  X+24 | 2 | cape }}&lt;br /&gt;
{{packet field |  X+26 | 2 | misc1 }}&lt;br /&gt;
{{packet field |  X+28 | 4 | option }}&lt;br /&gt;
{{packet field |  X+32 | 4 | karma }}&lt;br /&gt;
{{packet field |  X+36 | 4 | manner }}&lt;br /&gt;
{{packet field |  X+40 | 2 | status point }}&lt;br /&gt;
{{packet field |  X+42 | 2 | hp }}&lt;br /&gt;
{{packet field |  X+44 | 2 | max hp }}&lt;br /&gt;
{{packet field |  X+46 | 2 | sp }}&lt;br /&gt;
{{packet field |  X+48 | 2 | max sp }}&lt;br /&gt;
{{packet field |  X+50 | 2 | speed, always 150 }}&lt;br /&gt;
{{packet field |  X+52 | 2 | species }}&lt;br /&gt;
{{packet field |  X+54 | 2 | hair }}&lt;br /&gt;
{{packet field |  X+56 | 2 | weapon (always 0) }}&lt;br /&gt;
{{packet field |  X+58 | 2 | level }}&lt;br /&gt;
{{packet field |  X+60 | 2 | skill points }}&lt;br /&gt;
{{packet field |  X+62 | 2 | &amp;quot;head bottom&amp;quot; - legs }}&lt;br /&gt;
{{packet field |  X+64 | 2 | shield }}&lt;br /&gt;
{{packet field |  X+66 | 2 | &amp;quot;head top&amp;quot; - helmet }}&lt;br /&gt;
{{packet field |  X+68 | 2 | &amp;quot;head middle&amp;quot; - torso }}&lt;br /&gt;
{{packet field |  X+70 | 2 | hair color }}&lt;br /&gt;
{{packet field |  X+72 | 2 | misc2 (calculated, not stored) }}&lt;br /&gt;
{{packet field |  X+74 | 24 | name }}&lt;br /&gt;
{{packet field |  X+98 | 1 | str }}&lt;br /&gt;
{{packet field |  X+99 | 1 | agi }}&lt;br /&gt;
{{packet field |  X+100 | 1 | vit }}&lt;br /&gt;
{{packet field |  X+101 | 1 | int }}&lt;br /&gt;
{{packet field |  X+102 | 1 | dex }}&lt;br /&gt;
{{packet field |  X+103 | 1 | luk }}&lt;br /&gt;
{{packet field |  X+104 | 1 | char num }}&lt;br /&gt;
{{packet field |  X+105 | 1 | &#039;&#039;unused&#039;&#039; }}&lt;br /&gt;
|description=&lt;br /&gt;
Sent in response to [[Net:0x0065|Character Server Connection Request]], either directly or via [[Net:0x2713]].&lt;br /&gt;
&lt;br /&gt;
Upon receiving this packet, the client is able to select a character to play with, create a character in a new slot, or deleted an existing character.&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Net:0x0067&amp;diff=29089</id>
		<title>Net:0x0067</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Net:0x0067&amp;diff=29089"/>
		<updated>2013-12-16T21:18:32Z</updated>

		<summary type="html">&lt;p&gt;O11c: fix id&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{packet&lt;br /&gt;
|nicename= Create Character Request&lt;br /&gt;
|id=0x0067&lt;br /&gt;
|mode={{{mode}}}&lt;br /&gt;
|length=37&lt;br /&gt;
|alignment=white&lt;br /&gt;
|define= CMSG_CHAR_CREATE&lt;br /&gt;
|sent={{mana location|src/net/tmwa/charserverhandler.cpp|315}}&lt;br /&gt;
|parsed={{tmwa location|src/char/char.cpp|2436}}&lt;br /&gt;
|fields=&lt;br /&gt;
{{packet field |  0 |  2| Packet ID   }}&lt;br /&gt;
{{packet field |  2 |  24| Char Name   }}&lt;br /&gt;
{{packet field |  26 |  6| Char Stats   }}&lt;br /&gt;
{{packet field |  32 |  1| Char Selection Slot   }}&lt;br /&gt;
{{packet field |  33 |  2| Hair color   }}&lt;br /&gt;
{{packet field |  35 |  2| Hair Style   }}&lt;br /&gt;
&lt;br /&gt;
|description=&lt;br /&gt;
Sent by a client to the character server to request the creation of a character and determan the characters name, stats, slot, hair color and hair style.&lt;br /&gt;
If it fails to make a new char, sends packet 0x6e;. otherwise, sends packet 0x00.&lt;br /&gt;
&lt;br /&gt;
}}&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=MediaWiki:Sidebar&amp;diff=29053</id>
		<title>MediaWiki:Sidebar</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=MediaWiki:Sidebar&amp;diff=29053"/>
		<updated>2013-12-10T21:38:21Z</updated>

		<summary type="html">&lt;p&gt;O11c: fix manasource downloads link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;* navigation&lt;br /&gt;
** mainpage|mainpage&lt;br /&gt;
** Dev:Main|Development&lt;br /&gt;
** website-url|website&lt;br /&gt;
** todo-url|todo&lt;br /&gt;
** recentchanges-url|recentchanges&lt;br /&gt;
** randompage-url|randompage&lt;br /&gt;
** Help:Contents|Wiki help&lt;br /&gt;
* Links&lt;br /&gt;
** http://forums.themanaworld.org/|Forum&lt;br /&gt;
** irc://chat.freenode.net/themanaworld|IRC channel&lt;br /&gt;
** https://plus.google.com/114523926767095095371/|Google+&lt;br /&gt;
** http://manaplus.evolonline.org|ManaPlus Client&lt;br /&gt;
** http://manasource.org/downloads.html|Mana Client&lt;br /&gt;
** http://trello.com/themanaworld|Trello&lt;br /&gt;
* SEARCH&lt;br /&gt;
* TOOLBOX&lt;br /&gt;
* LANGUAGES&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Jowalling&amp;diff=29012</id>
		<title>User talk:Jowalling</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Jowalling&amp;diff=29012"/>
		<updated>2013-12-06T06:35:13Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 06:35, 6 December 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Jowalling&amp;diff=29011</id>
		<title>User:Jowalling</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Jowalling&amp;diff=29011"/>
		<updated>2013-12-06T06:35:12Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Studied Basic, Lisp and Cobalt in the 80&#039;s. Continued with Lisp, and took courses in C++, followed by Red Had linux administration in the 90&#039;s and early 2000&#039;s. Got away from Linux for awhile due to daughter and wife and their wicked windows ways. Have returned to Linux completely on my laptop. Getting back into Linux, and would like to help this project in some way.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Archive:TmwAthena_Packets&amp;diff=28993</id>
		<title>Archive:TmwAthena Packets</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Archive:TmwAthena_Packets&amp;diff=28993"/>
		<updated>2013-12-06T01:03:33Z</updated>

		<summary type="html">&lt;p&gt;O11c: /* Packet Alignment */ fix orangered example&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
=== Packet Alignment ===&lt;br /&gt;
The alignment of the data within the packet payload can cause additional overhead if the data is not properly aligned to word boundaries. For example, in a 32-bit application, a word is a sequence of two eight-bit bytes. Any data that occupies 2 bytes or larger on this platform should always start at a (2 * n) offset (0, 2, 4, etc). Any data that is less than 2 bytes can start at any offset, so long as it does not span multiple words. A 16-bit integer could start at offset 0, 2, or 4, but not at 1, 3, or 5 because the first byte would be in one word and the second byte would be in the next word. Single byte words will always fall on word boundaries. The last piece of data should end on a word boundary as well. If any of the data are double words in size, the packet must also be a multiple of the double word size and any double word sized data must fall on a double word boundary.&lt;br /&gt;
&lt;br /&gt;
To leverage the maximum efficiency, padding can be added between pieces of data to force subsequent data to be aligned to word boundaries. For example, if a packet contains a word, and a half word, either the data should be ordered as word, half word, and a half word of padding that will be discarded by the recipient. The same data, ordered as a half word, word, a half word of padding would take up the same amount of space, but the word would span two different words of the packet and cause inefficient processing of that packet.&lt;br /&gt;
&lt;br /&gt;
The following colors are used to indicate the alignment of the packets:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Color Meaning &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt; Examples &amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: green;&amp;quot;&amp;gt;The packet contents and total size are properly aligned.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2; 2 2; 2 2 4; 2 2 2*N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: chartreuse;&amp;quot;&amp;gt;The packet contents are aligned, but they contain a variable-length element that may cause the whole packet to be improperly aligned.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 2 1*N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: yellow;&amp;quot;&amp;gt;The packet contents are properly aligned, but do not end on a word boundary.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 1 ; 2 2 4 1 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: orange;&amp;quot;&amp;gt;The packet contents are not properly aligned on word boundaries, but could be with skew padding.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 4 2 &amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: orangered;&amp;quot;&amp;gt;The packet contents are not properly aligned if the number of varying elements is at least 2.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 2 (2 1)*N&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background: red;&amp;quot;&amp;gt;The packet contents are not properly aligned on word boundaries, even with skew padding.&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt; 2 4 2 4&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Client Packets ==&lt;br /&gt;
This is a new table that steal information from individual packet pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Client #define&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0061|mode=row}}&lt;br /&gt;
{{Net:0x0062|mode=row}}&lt;br /&gt;
{{Net:0x0063|mode=row}}&lt;br /&gt;
{{Net:0x0064|mode=row}}&lt;br /&gt;
{{Net:0x0065|mode=row}}&lt;br /&gt;
{{Net:0x0066|mode=row}}&lt;br /&gt;
{{Net:0x0067|mode=row}}&lt;br /&gt;
{{Net:0x0068|mode=row}}&lt;br /&gt;
{{Net:0x0069|mode=row}}&lt;br /&gt;
{{Net:0x006A|mode=row}}&lt;br /&gt;
{{Net:0x006B|mode=row}}&lt;br /&gt;
{{Net:0x006C|mode=row}}&lt;br /&gt;
{{Net:0x006D|mode=row}}&lt;br /&gt;
{{Net:0x006E|mode=row}}&lt;br /&gt;
{{Net:0x006F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0070|mode=row}}&lt;br /&gt;
{{Net:0x0071|mode=row}}&lt;br /&gt;
{{Net:0x0072|mode=row}}&lt;br /&gt;
{{Net:0x0073|mode=row}}&lt;br /&gt;
{{Net:0x0078|mode=row}}&lt;br /&gt;
{{Net:0x007B|mode=row}}&lt;br /&gt;
{{Net:0x007C|mode=row}}&lt;br /&gt;
{{Net:0x007D|mode=row}}&lt;br /&gt;
{{Net:0x007E|mode=row}}&lt;br /&gt;
{{Net:0x007F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0080|mode=row}}&lt;br /&gt;
{{Net:0x0081|mode=row}}&lt;br /&gt;
{{Net:0x0085|mode=row}}&lt;br /&gt;
{{Net:0x0086|mode=row}}&lt;br /&gt;
{{Net:0x0087|mode=row}}&lt;br /&gt;
{{Net:0x0088|mode=row}}&lt;br /&gt;
{{Net:0x0089|mode=row}}&lt;br /&gt;
{{Net:0x008A|mode=row}}&lt;br /&gt;
{{Net:0x008C|mode=row}}&lt;br /&gt;
{{Net:0x008D|mode=row}}&lt;br /&gt;
{{Net:0x008E|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0090|mode=row}}&lt;br /&gt;
{{Net:0x0091|mode=row}}&lt;br /&gt;
{{Net:0x0092|mode=row}}&lt;br /&gt;
{{Net:0x0094|mode=row}}&lt;br /&gt;
{{Net:0x0095|mode=row}}&lt;br /&gt;
{{Net:0x0096|mode=row}}&lt;br /&gt;
{{Net:0x0097|mode=row}}&lt;br /&gt;
{{Net:0x0098|mode=row}}&lt;br /&gt;
{{Net:0x0099|mode=row}}&lt;br /&gt;
{{Net:0x009A|mode=row}}&lt;br /&gt;
{{Net:0x009B|mode=row}}&lt;br /&gt;
{{Net:0x009C|mode=row}}&lt;br /&gt;
{{Net:0x009D|mode=row}}&lt;br /&gt;
{{Net:0x009E|mode=row}}&lt;br /&gt;
{{Net:0x009F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00A0|mode=row}}&lt;br /&gt;
{{Net:0x00A1|mode=row}}&lt;br /&gt;
{{Net:0x00A2|mode=row}}&lt;br /&gt;
{{Net:0x00A4|mode=row}}&lt;br /&gt;
{{Net:0x00A6|mode=row}}&lt;br /&gt;
{{Net:0x00A7|mode=row}}&lt;br /&gt;
{{Net:0x00A8|mode=row}}&lt;br /&gt;
{{Net:0x00A9|mode=row}}&lt;br /&gt;
{{Net:0x00AA|mode=row}}&lt;br /&gt;
{{Net:0x00AB|mode=row}}&lt;br /&gt;
{{Net:0x00AC|mode=row}}&lt;br /&gt;
{{Net:0x00AF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00B0|mode=row}}&lt;br /&gt;
{{Net:0x00B1|mode=row}}&lt;br /&gt;
{{Net:0x00B2|mode=row}}&lt;br /&gt;
{{Net:0x00B3|mode=row}}&lt;br /&gt;
{{Net:0x00B4|mode=row}}&lt;br /&gt;
{{Net:0x00B5|mode=row}}&lt;br /&gt;
{{Net:0x00B6|mode=row}}&lt;br /&gt;
{{Net:0x00B7|mode=row}}&lt;br /&gt;
{{Net:0x00B8|mode=row}}&lt;br /&gt;
{{Net:0x00B9|mode=row}}&lt;br /&gt;
{{Net:0x00BB|mode=row}}&lt;br /&gt;
{{Net:0x00BC|mode=row}}&lt;br /&gt;
{{Net:0x00BD|mode=row}}&lt;br /&gt;
{{Net:0x00BE|mode=row}}&lt;br /&gt;
{{Net:0x00BF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00C0|mode=row}}&lt;br /&gt;
{{Net:0x00C1|mode=row}}&lt;br /&gt;
{{Net:0x00C2|mode=row}}&lt;br /&gt;
{{Net:0x00C3|mode=row}}&lt;br /&gt;
{{Net:0x00C4|mode=row}}&lt;br /&gt;
{{Net:0x00C5|mode=row}}&lt;br /&gt;
{{Net:0x00C6|mode=row}}&lt;br /&gt;
{{Net:0x00C7|mode=row}}&lt;br /&gt;
{{Net:0x00C8|mode=row}}&lt;br /&gt;
{{Net:0x00C9|mode=row}}&lt;br /&gt;
{{Net:0x00CA|mode=row}}&lt;br /&gt;
{{Net:0x00CB|mode=row}}&lt;br /&gt;
{{Net:0x00CC|mode=row}}&lt;br /&gt;
{{Net:0x00CD|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00E4|mode=row}}&lt;br /&gt;
{{Net:0x00E5|mode=row}}&lt;br /&gt;
{{Net:0x00E6|mode=row}}&lt;br /&gt;
{{Net:0x00E7|mode=row}}&lt;br /&gt;
{{Net:0x00E8|mode=row}}&lt;br /&gt;
{{Net:0x00E9|mode=row}}&lt;br /&gt;
{{Net:0x00EB|mode=row}}&lt;br /&gt;
{{Net:0x00EC|mode=row}}&lt;br /&gt;
{{Net:0x00ED|mode=row}}&lt;br /&gt;
{{Net:0x00EE|mode=row}}&lt;br /&gt;
{{Net:0x00EF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x00F0|mode=row}}&lt;br /&gt;
{{Net:0x00F2|mode=row}}&lt;br /&gt;
{{Net:0x00F3|mode=row}}&lt;br /&gt;
{{Net:0x00F4|mode=row}}&lt;br /&gt;
{{Net:0x00F5|mode=row}}&lt;br /&gt;
{{Net:0x00F6|mode=row}}&lt;br /&gt;
{{Net:0x00F7|mode=row}}&lt;br /&gt;
{{Net:0x00F8|mode=row}}&lt;br /&gt;
{{Net:0x00F9|mode=row}}&lt;br /&gt;
{{Net:0x00FA|mode=row}}&lt;br /&gt;
{{Net:0x00FB|mode=row}}&lt;br /&gt;
{{Net:0x00FC|mode=row}}&lt;br /&gt;
{{Net:0x00FD|mode=row}}&lt;br /&gt;
{{Net:0x00FE|mode=row}}&lt;br /&gt;
{{Net:0x00FF|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0100|mode=row}}&lt;br /&gt;
{{Net:0x0101|mode=row}}&lt;br /&gt;
{{Net:0x0102|mode=row}}&lt;br /&gt;
{{Net:0x0103|mode=row}}&lt;br /&gt;
{{Net:0x0104|mode=row}}&lt;br /&gt;
{{Net:0x0105|mode=row}}&lt;br /&gt;
{{Net:0x0106|mode=row}}&lt;br /&gt;
{{Net:0x0107|mode=row}}&lt;br /&gt;
{{Net:0x0108|mode=row}}&lt;br /&gt;
{{Net:0x0109|mode=row}}&lt;br /&gt;
{{Net:0x010C|mode=row}}&lt;br /&gt;
{{Net:0x010E|mode=row}}&lt;br /&gt;
{{Net:0x010F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0110|mode=row}}&lt;br /&gt;
{{Net:0x0112|mode=row}}&lt;br /&gt;
{{Net:0x0113|mode=row}}&lt;br /&gt;
{{Net:0x0116|mode=row}}&lt;br /&gt;
{{Net:0x0119|mode=row}}&lt;br /&gt;
{{Net:0x011B|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0139|mode=row}}&lt;br /&gt;
{{Net:0x013A|mode=row}}&lt;br /&gt;
{{Net:0x013B|mode=row}}&lt;br /&gt;
{{Net:0x013C|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0141|mode=row}}&lt;br /&gt;
{{Net:0x0142|mode=row}}&lt;br /&gt;
{{Net:0x0143|mode=row}}&lt;br /&gt;
{{Net:0x0146|mode=row}}&lt;br /&gt;
{{Net:0x0148|mode=row}}&lt;br /&gt;
{{Net:0x0149|mode=row}}&lt;br /&gt;
{{Net:0x014C|mode=row}}&lt;br /&gt;
{{Net:0x014D|mode=row}}&lt;br /&gt;
{{Net:0x014E|mode=row}}&lt;br /&gt;
{{Net:0x014F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0151|mode=row}}&lt;br /&gt;
{{Net:0x0152|mode=row}}&lt;br /&gt;
{{Net:0x0153|mode=row}}&lt;br /&gt;
{{Net:0x0154|mode=row}}&lt;br /&gt;
{{Net:0x0155|mode=row}}&lt;br /&gt;
{{Net:0x0156|mode=row}}&lt;br /&gt;
{{Net:0x0159|mode=row}}&lt;br /&gt;
{{Net:0x015A|mode=row}}&lt;br /&gt;
{{Net:0x015B|mode=row}}&lt;br /&gt;
{{Net:0x015C|mode=row}}&lt;br /&gt;
{{Net:0x015D|mode=row}}&lt;br /&gt;
{{Net:0x015E|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0160|mode=row}}&lt;br /&gt;
{{Net:0x0161|mode=row}}&lt;br /&gt;
{{Net:0x0162|mode=row}}&lt;br /&gt;
{{Net:0x0163|mode=row}}&lt;br /&gt;
{{Net:0x0165|mode=row}}&lt;br /&gt;
{{Net:0x0166|mode=row}}&lt;br /&gt;
{{Net:0x0167|mode=row}}&lt;br /&gt;
{{Net:0x0168|mode=row}}&lt;br /&gt;
{{Net:0x0169|mode=row}}&lt;br /&gt;
{{Net:0x016A|mode=row}}&lt;br /&gt;
{{Net:0x016B|mode=row}}&lt;br /&gt;
{{Net:0x016C|mode=row}}&lt;br /&gt;
{{Net:0x016D|mode=row}}&lt;br /&gt;
{{Net:0x016E|mode=row}}&lt;br /&gt;
{{Net:0x016F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0170|mode=row}}&lt;br /&gt;
{{Net:0x0171|mode=row}}&lt;br /&gt;
{{Net:0x0172|mode=row}}&lt;br /&gt;
{{Net:0x0173|mode=row}}&lt;br /&gt;
{{Net:0x0174|mode=row}}&lt;br /&gt;
{{Net:0x017E|mode=row}}&lt;br /&gt;
{{Net:0x017F|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0180|mode=row}}&lt;br /&gt;
{{Net:0x0181|mode=row}}&lt;br /&gt;
{{Net:0x0183|mode=row}}&lt;br /&gt;
{{Net:0x0184|mode=row}}&lt;br /&gt;
{{Net:0x018A|mode=row}}&lt;br /&gt;
{{Net:0x018B|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0190|mode=row}}&lt;br /&gt;
{{Net:0x0195|mode=row}}&lt;br /&gt;
{{Net:0x0196|mode=row}}&lt;br /&gt;
{{Net:0x019B|mode=row}}&lt;br /&gt;
{{Net:0x019C|mode=row}}&lt;br /&gt;
{{Net:0x019D|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01B1|mode=row}}&lt;br /&gt;
{{Net:0x01B6|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01C8|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01D4|mode=row}}&lt;br /&gt;
{{Net:0x01D5|mode=row}}&lt;br /&gt;
{{Net:0x01D7|mode=row}}&lt;br /&gt;
{{Net:0x01D8|mode=row}}&lt;br /&gt;
{{Net:0x01D9|mode=row}}&lt;br /&gt;
{{Net:0x01DA|mode=row}}&lt;br /&gt;
{{Net:0x01DE|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01EE|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x01F0|mode=row}}&lt;br /&gt;
&lt;br /&gt;
{{Net:0x020C|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- Internal packets not documented here. --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x7530|mode=row}}&lt;br /&gt;
{{Net:0x7531|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ManaPlus Packets ==&lt;br /&gt;
These packets were originally added by ManaPlus to support Evol.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Client #define&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x0212|mode=row}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Used packets ==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
!packet !!      len     !!      client define                                   !!      sent location(s)                                                                                                                        !!      parse location&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0061 ||      50      ||      CMSG_CHAR_PASSWORD_CHANGE                       ||      src/net/tmwa/loginhandler.cpp:264                                                                                                       ||      src/char/char.c:3036&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0062 ||      3       ||      SMSG_CHAR_PASSWORD_RESPONSE                     ||      src/char/char.c:2368                                                                                                                    ||      src/net/tmwa/loginhandler.cpp:71&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0063 ||      -1      ||      SMSG_UPDATE_HOST                                ||      src/login/login.c:3732                                                                                                                  ||      src/net/tmwa/loginhandler.cpp:103&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0064 ||      55      ||      (hard-coded)                                    ||      src/net/tmwa/loginhandler.cpp:298                                                                                                       ||      src/login/login.c:3644&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0065 ||      17      ||      CMSG_CHAR_SERVER_CONNECT                        ||      src/net/tmwa/charserverhandler.cpp:340                                                                                                  ||      src/char/char.c:3049&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0066 ||      3       ||      CMSG_CHAR_SELECT                                ||      src/net/tmwa/charserverhandler.cpp:283&amp;lt;br&amp;gt;src/char/char.c:3424                                                                          ||      src/char/char.c:3142&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0067 ||      37      ||      CMSG_CHAR_CREATE                                ||      src/net/tmwa/charserverhandler.cpp:291                                                                                                  ||      src/char/char.c:3312&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0068 ||      46      ||      CMSG_CHAR_DELETE                                ||      src/net/tmwa/charserverhandler.cpp:306                                                                                                  ||      src/char/char.c:3387&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0069 ||      -1      ||      SMSG_LOGIN_DATA                                 ||      src/login/login.c:3795                                                                                                                  ||      src/net/tmwa/loginhandler.cpp:114&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006A ||      23      ||      SMSG_LOGIN_ERROR                                ||      src/login/login.c:3683&amp;lt;br&amp;gt;src/login/login.c:3833                                                                                        ||      src/net/tmwa/loginhandler.cpp:149&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006B ||      -1      ||      SMSG_CHAR_LOGIN                                 ||      src/char/char.c:1660                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:101&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006C ||      3       ||      SMSG_CHAR_LOGIN_ERROR                           ||      src/char/char.c:1948&amp;lt;br&amp;gt;src/char/char.c:1970&amp;lt;br&amp;gt;src/char/char.c:3110&amp;lt;br&amp;gt;src/char/char.c:3133                                            ||      src/net/tmwa/charserverhandler.cpp:75&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006D ||      108     ||      SMSG_CHAR_CREATE_SUCCEEDED                      ||      src/char/char.c:3325                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:118&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006E ||      3       ||      SMSG_CHAR_CREATE_FAILED                         ||      src/char/char.c:3318                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:137&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x006F ||      2       ||      SMSG_CHAR_DELETE_SUCCEEDED                      ||      src/char/char.c:3496                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:144&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0070 ||      3       ||      SMSG_CHAR_DELETE_FAILED                         ||      src/char/char.c:3156&amp;lt;br&amp;gt;src/char/char.c:3401&amp;lt;br&amp;gt;src/char/char.c:3432&amp;lt;br&amp;gt;src/char/char.c:3504                                            ||      src/net/tmwa/charserverhandler.cpp:153&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0071 ||      28      ||      SMSG_CHAR_MAP_INFO                              ||      src/char/char.c:3272                                                                                                                    ||      src/net/tmwa/charserverhandler.cpp:158&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0072 ||      19      ||      CMSG_MAP_SERVER_CONNECT                         ||      src/net/tmwa/gamehandler.cpp:124                                                                                                        ||      src/map/clif.c:6729&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0073 ||      11      ||      SMSG_MAP_LOGIN_SUCCESS                          ||      src/map/clif.c:609                                                                                                                      ||      src/net/tmwa/gamehandler.cpp:67&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0078 ||      54      ||      SMSG_BEING_VISIBLE                              ||      src/map/clif.c:823&amp;lt;br&amp;gt;src/map/clif.c:1060&amp;lt;br&amp;gt;src/map/clif.c:1185&amp;lt;br&amp;gt;src/map/clif.c:1382                                                 ||      src/net/tmwa/beinghandler.cpp:121&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007B ||      60      ||      SMSG_BEING_MOVE                                 ||      src/map/clif.c:912&amp;lt;br&amp;gt;src/map/clif.c:1122                                                                                               ||      src/net/tmwa/beinghandler.cpp:122&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007C ||      41      ||      SMSG_BEING_SPAWN                                ||      src/map/clif.c:1279&amp;lt;br&amp;gt;src/map/clif.c:1347&amp;lt;br&amp;gt;src/map/clif.c:1372&amp;lt;br&amp;gt;src/map/clif.c:1414                                                ||      src/net/tmwa/beinghandler.cpp:239&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007D ||      2       ||      CMSG_MAP_LOADED                                 ||      src/net/tmwa/gamehandler.cpp:152                                                                                                        ||      src/map/clif.c:6786&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007E ||      6       ||      CMSG_CLIENT_PING                                ||      src/net/tmwa/gamehandler.cpp:166                                                                                                        ||      src/map/clif.c:6942&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x007F ||      6       ||      SMSG_SERVER_PING                                ||      src/map/clif.c:1445                                                                                                                     ||      src/net/tmwa/gamehandler.cpp:81&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0080 ||      7       ||      SMSG_BEING_REMOVE                               ||      src/map/clif.c:65&amp;lt;br&amp;gt;src/map/clif.c:791                                                                                                 ||      src/net/tmwa/beinghandler.cpp:273&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0081 ||      3       ||      SMSG_CONNECTION_PROBLEM                         ||      src/login/login.c:3700&amp;lt;br&amp;gt;src/login/login.c:3824&amp;lt;br&amp;gt;src/char/char.c:3264&amp;lt;br&amp;gt;src/map/clif.c:628                                          ||      src/net/tmwa/generalhandler.cpp:122&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0085 ||      5       ||      CMSG_PLAYER_CHANGE_DEST                         ||      src/net/tmwa/playerhandler.cpp:621                                                                                                      ||      src/map/clif.c:6955&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0086 ||      16      ||      SMSG_BEING_MOVE2                                ||                                                                                                                                              ||      src/net/tmwa/beinghandler.cpp:246&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0087 ||      12      ||      SMSG_WALK_RESPONSE                              ||      src/map/clif.c:1463                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:177&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0088 ||      10      ||      SMSG_PLAYER_STOP                                ||      src/map/clif.c:1590                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:630&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0089 ||      7       ||      CMSG_PLAYER_CHANGE_ACT&amp;lt;br&amp;gt;CMSG_PLAYER_ATTACK    ||      src/net/tmwa/playerhandler.cpp:635&amp;lt;br&amp;gt;src/net/tmwa/playerhandler.cpp:566                                                                ||      src/map/clif.c:7341&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008A ||      29      ||      SMSG_BEING_ACTION                               ||      src/map/clif.c:3761&amp;lt;br&amp;gt;src/map/clif.c:6563                                                                                              ||      src/net/tmwa/beinghandler.cpp:328&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008C ||      -1      ||      CMSG_CHAT_MESSAGE                               ||      src/net/tmwa/chathandler.cpp:199                                                                                                        ||      src/map/clif.c:7173&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008D ||      -1      ||      SMSG_BEING_CHAT                                 ||      src/map/clif.c:7209&amp;lt;br&amp;gt;src/map/clif.c:7236                                                                                              ||      src/net/tmwa/chathandler.cpp:113&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x008E ||      -1      ||      SMSG_PLAYER_CHAT                                ||      src/map/clif.c:4603&amp;lt;br&amp;gt;src/map/clif.c:7219                                                                                              ||      src/net/tmwa/chathandler.cpp:158&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0090 ||      7       ||      CMSG_NPC_TALK                                   ||      src/net/tmwa/npchandler.cpp:133                                                                                                         ||      src/map/clif.c:7738&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0091 ||      22      ||      SMSG_PLAYER_WARP                                ||      src/map/clif.c:1545                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:185&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0092 ||      28      ||      SMSG_CHANGE_MAP_SERVER                          ||      src/map/clif.c:1569                                                                                                                     ||      src/net/tmwa/charserverhandler.cpp:179&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0094 ||      6       ||      (hard-coded)                                    ||      src/net/tmwa/beinghandler.cpp:92                                                                                                        ||      src/map/clif.c:7047&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0095 ||      30      ||      SMSG_BEING_NAME_RESPONSE                        ||      src/map/clif.c:7057                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:484&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0096 ||      -1      ||      CMSG_CHAT_WHISPER                               ||      src/net/tmwa/chathandler.cpp:215                                                                                                        ||      src/map/clif.c:7459&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0097 ||      -1      ||      SMSG_WHISPER                                    ||      src/map/clif.c:4771                                                                                                                     ||      src/net/tmwa/chathandler.cpp:91&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0098 ||      3       ||      SMSG_WHISPER_RESPONSE                           ||      src/map/clif.c:4785                                                                                                                     ||      src/net/tmwa/chathandler.cpp:72&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0099 ||      -1      ||      CMSG_ADMIN_ANNOUNCE&amp;lt;br&amp;gt;CMSG_CHAT_ANNOUNCE       ||      src/net/tmwa/adminhandler.cpp:84                                                                                                        ||      src/map/clif.c:7549&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009A ||      -1      ||      SMSG_GM_CHAT                                    ||      src/map/clif.c:4623&amp;lt;br&amp;gt;src/map/clif.c:8359                                                                                              ||      src/net/tmwa/chathandler.cpp:159&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009B ||      5       ||      CMSG_PLAYER_CHANGE_DIR                          ||      src/net/tmwa/playerhandler.cpp:614                                                                                                      ||      src/map/clif.c:7278&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009C ||      9       ||      SMSG_BEING_CHANGE_DIRECTION                     ||      src/map/clif.c:7293                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:499&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009D ||      17      ||      SMSG_ITEM_VISIBLE                               ||      src/map/clif.c:3815                                                                                                                     ||      src/net/tmwa/itemhandler.cpp:47&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009E ||      17      ||      SMSG_ITEM_DROPPED                               ||      src/map/clif.c:671                                                                                                                      ||      src/net/tmwa/itemhandler.cpp:48&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x009F ||      6       ||      CMSG_ITEM_PICKUP                                ||      src/net/tmwa/playerhandler.cpp:607                                                                                                      ||      src/map/clif.c:7573&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A0 ||      23      ||      SMSG_PLAYER_INVENTORY_ADD                       ||      src/map/clif.c:1855&amp;lt;br&amp;gt;src/map/clif.c:1876                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:218&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A1 ||      6       ||      SMSG_ITEM_REMOVE                                ||      src/map/clif.c:715                                                                                                                      ||      src/net/tmwa/itemhandler.cpp:61&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A2 ||      6       ||      CMSG_PLAYER_INVENTORY_DROP                      ||      src/net/tmwa/inventoryhandler.cpp:473                                                                                                   ||      src/map/clif.c:7613&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A4 ||      -1      ||      SMSG_PLAYER_EQUIPMENT                           ||      src/map/clif.c:2017                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:376&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A6 ||      -1      ||      SMSG_PLAYER_STORAGE_EQUIP                       ||      src/map/clif.c:2144&amp;lt;br&amp;gt;src/map/clif.c:2273                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:187&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A7 ||      8       ||      CMSG_PLAYER_INVENTORY_USE                       ||      src/net/tmwa/inventoryhandler.cpp:465                                                                                                   ||      src/map/clif.c:7640&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A8 ||      7       ||      SMSG_ITEM_USE_RESPONSE                          ||      src/map/clif.c:2935                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:284&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00A9 ||      6       ||      CMSG_PLAYER_EQUIP                               ||      src/net/tmwa/inventoryhandler.cpp:446                                                                                                   ||      src/map/clif.c:7666&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AA ||      7       ||      SMSG_PLAYER_EQUIP                               ||      src/map/clif.c:2819                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:401&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AB ||      4       ||      CMSG_PLAYER_UNEQUIP                             ||      src/net/tmwa/inventoryhandler.cpp:456                                                                                                   ||      src/map/clif.c:7706&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AC ||      7       ||      SMSG_PLAYER_UNEQUIP                             ||      src/map/clif.c:2839                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:412&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00AF ||      6       ||      SMSG_PLAYER_INVENTORY_REMOVE                    ||      src/map/clif.c:1943                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:253&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B0 ||      8       ||      SMSG_PLAYER_STAT_UPDATE_1                       ||      src/map/clif.c:2350&amp;lt;br&amp;gt;src/map/clif.c:2357                                                                                              ||      src/net/tmwa/playerhandler.cpp:234&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B1 ||      8       ||      SMSG_PLAYER_STAT_UPDATE_2                       ||      src/map/clif.c:2437&amp;lt;br&amp;gt;src/map/clif.c:2443&amp;lt;br&amp;gt;src/map/clif.c:2447&amp;lt;br&amp;gt;src/map/clif.c:2451&amp;lt;br&amp;gt;src/map/clif.c:2455                         ||      src/net/tmwa/playerhandler.cpp:333&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B2 ||      3       ||      CMSG_PLAYER_RESTART                             ||      src/net/tmwa/charserverhandler.cpp:314&amp;lt;br&amp;gt;src/net/tmwa/playerhandler.cpp:642                                                            ||      src/map/clif.c:7411&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B3 ||      3       ||      SMSG_CHAR_SWITCH_RESPONSE                       ||      src/map/clif.c:653                                                                                                                      ||      src/net/tmwa/gamehandler.cpp:91&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B4 ||      -1      ||      SMSG_NPC_MESSAGE                                ||      src/map/clif.c:1696                                                                                                                     ||      src/net/tmwa/npchandler.cpp:102&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B5 ||      6       ||      SMSG_NPC_NEXT                                   ||      src/map/clif.c:1716                                                                                                                     ||      src/net/tmwa/npchandler.cpp:111&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B6 ||      6       ||      SMSG_NPC_CLOSE                                  ||      src/map/clif.c:1734                                                                                                                     ||      src/net/tmwa/npchandler.cpp:106&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B7 ||      -1      ||      SMSG_NPC_CHOICE                                 ||      src/map/clif.c:1752                                                                                                                     ||      src/net/tmwa/npchandler.cpp:97&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B8 ||      7       ||      CMSG_NPC_LIST_CHOICE                            ||      src/net/tmwa/npchandler.cpp:159                                                                                                         ||      src/map/clif.c:8194&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00B9 ||      6       ||      CMSG_NPC_NEXT_REQUEST                           ||      src/net/tmwa/npchandler.cpp:140                                                                                                         ||      src/map/clif.c:8206&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BB ||      5       ||      CMSG_STAT_UPDATE_REQUEST                        ||      src/net/tmwa/playerhandler.cpp:581                                                                                                      ||      src/map/clif.c:7993&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BC ||      6       ||      SMSG_PLAYER_STAT_UPDATE_4                       ||      src/map/clif.c:2799                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:381&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BD ||      44      ||      SMSG_PLAYER_STAT_UPDATE_5                       ||      src/map/clif.c:2702                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:401&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BE ||      5       ||      SMSG_PLAYER_STAT_UPDATE_6                       ||      src/map/clif.c:2466                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:521&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00BF ||      3       ||      CMSG_PLAYER_EMOTE                               ||      src/net/tmwa/playerhandler.cpp:573                                                                                                      ||      src/map/clif.c:7308&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C0 ||      7       ||      SMSG_BEING_EMOTION                              ||      src/map/clif.c:6469&amp;lt;br&amp;gt;src/map/clif.c:6488&amp;lt;br&amp;gt;src/map/clif.c:7317                                                                       ||      src/net/tmwa/beinghandler.cpp:385&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C1 ||      2       ||      CMSG_WHO_REQUEST&amp;lt;br&amp;gt;CMSG_CHAT_WHO               ||      src/map/chathandler.cpp:264                                                                                                             ||      src/map/clif.c:7330&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C2 ||      6       ||      SMSG_WHO_ANSWER                                 ||      src/map/clif.c:7332                                                                                                                     ||      src/net/tmwa/gamehandler.cpp:86&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C3 ||      8       ||      SMSG_BEING_CHANGE_LOOKS                         ||                                                                                                                                              ||      src/net/tmwa/beinghandler.cpp:400&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C4 ||      6       ||      SMSG_NPC_BUY_SELL_CHOICE                        ||      src/map/clif.c:1611                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:64&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C5 ||      7       ||      CMSG_NPC_BUY_SELL_REQUEST                       ||      src/net/tmwa/npchandler.cpp:193&amp;lt;br&amp;gt;src/net/tmwa/npchandler.cpp:200                                                                      ||      src/map/clif.c:7756&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C6 ||      -1      ||      SMSG_NPC_BUY                                    ||      src/map/clif.c:1631                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:72&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C7 ||      -1      ||      SMSG_NPC_SELL                                   ||      src/map/clif.c:1663                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:88&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C8 ||      -1      ||      CMSG_NPC_BUY_REQUEST                            ||      src/net/tmwa/npchandler.cpp:207                                                                                                         ||      src/map/clif.c:7765&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00C9 ||      -1      ||      CMSG_NPC_SELL_REQUEST                           ||      src/net/tmwa/npchandler.cpp:215                                                                                                         ||      src/map/clif.c:7784&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CA ||      3       ||      SMSG_NPC_BUY_RESPONSE                           ||      src/map/clif.c:7775                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:114&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CB ||      3       ||      SMSG_NPC_SELL_RESPONSE                          ||      src/map/clif.c:7794                                                                                                                     ||      src/net/tmwa/buysellhandler.cpp:124&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CC ||      6       ||      CMSG_ADMIN_KICK                                 ||      src/net/tmwa/adminhandler.cpp:104                                                                                                       ||      src/map/clif.c:8913&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00CD ||      6       ||      SMSG_ADMIN_KICK_ACK                             ||      src/map/clif.c:6605                                                                                                                     ||      src/net/tmwa/adminhandler.cpp:62&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E4 ||      6       ||      CMSG_TRADE_REQUEST                              ||      src/net/tmwa/tradehandler.cpp:241                                                                                                       ||      src/map/clif.c:7859&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E5 ||      26      ||      SMSG_TRADE_REQUEST                              ||      src/map/clif.c:3180                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:86&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E6 ||      3       ||      CMSG_TRADE_RESPONSE                             ||      src/net/tmwa/tradehandler.cpp:250                                                                                                       ||      src/map/clif.c:7876&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E7 ||      3       ||      SMSG_TRADE_RESPONSE                             ||      src/map/clif.c:3198                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:120&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E8 ||      8       ||      CMSG_TRADE_ITEM_ADD_REQUEST                     ||      src/net/tmwa/tradehandler.cpp:256&amp;lt;br&amp;gt;src/net/tmwa/tradehandler.cpp:268                                                                  ||      src/map/clif.c:7887&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00E9 ||      19      ||      SMSG_TRADE_ITEM_ADD                             ||      src/map/clif.c:3218                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:159&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EB ||      2       ||      CMSG_TRADE_ADD_COMPLETE                         ||      src/net/tmwa/tradehandler.cpp:275                                                                                                       ||      src/map/clif.c:7898&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EC ||      3       ||      SMSG_TRADE_OK                                   ||      src/map/clif.c:3320                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:218&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00ED ||      2       ||      CMSG_TRADE_CANCEL_REQUEST                       ||      src/net/tmwa/tradehandler.cpp:285                                                                                                       ||      src/map/clif.c:7907&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EE ||      2       ||      SMSG_TRADE_CANCEL                               ||      src/map/clif.c:3338                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:223&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00EF ||      2       ||      CMSG_TRADE_OK                                   ||      src/net/tmwa/tradehandler.cpp:280                                                                                                       ||      src/map/clif.c:7916&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F0 ||      3       ||      SMSG_TRADE_COMPLETE                             ||      src/map/clif.c:3355                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:230&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F2 ||      6       ||      SMSG_PLAYER_STORAGE_STATUS                      ||      src/map/clif.c:3375&amp;lt;br&amp;gt;src/map/clif.c:3459                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:306&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F3 ||      8       ||      CMSG_MOVE_TO_STORAGE                            ||      src/net/tmwa/inventoryhandler.cpp:508                                                                                                   ||      src/map/clif.c:8370&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F4 ||      21      ||      SMSG_PLAYER_STORAGE_ADD                         ||      src/map/clif.c:3396&amp;lt;br&amp;gt;src/map/clif.c:3481                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:331&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F5 ||      8       ||      CSMG_MOVE_FROM_STORAGE                          ||      src/net/tmwa/inventoryhandler.cpp:514                                                                                                   ||      src/map/clif.c:8393&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F6 ||      8       ||      SMSG_PLAYER_STORAGE_REMOVE                      ||      src/map/clif.c:3543                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:353&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F7 ||      2       ||      CMSG_CLOSE_STORAGE                              ||      src/net/tmwa/inventoryhandler.cpp:500                                                                                                   ||      src/map/clif.c:8452&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F8 ||      2       ||      SMSG_PLAYER_STORAGE_CLOSE                       ||      src/map/clif.c:3562                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:365&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00F9 ||      26      ||      CMSG_PARTY_CREATE                               ||      src/net/tmwa/partyhandler.cpp:313                                                                                                       ||      src/map/clif.c:8469&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FA ||      3       ||      SMSG_PARTY_CREATE                               ||      src/map/clif.c:5231                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:79&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FB ||      -1      ||      SMSG_PARTY_INFO                                 ||      src/map/clif.c:5249                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:88&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FC ||      6       ||      CMSG_PARTY_INVITE                               ||      src/net/tmwa/partyhandler.cpp:324                                                                                                       ||      src/map/clif.c:8510&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FD ||      27      ||      SMSG_PARTY_INVITE_RESPONSE                      ||      src/map/clif.c:5327                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:112&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FE ||      30      ||      SMSG_PARTY_INVITED                              ||      src/map/clif.c:5299                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:139&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x00FF ||      10      ||      CMSG_PARTY_INVITED                              ||      src/net/tmwa/partyhandler.cpp:352                                                                                                       ||      src/map/clif.c:8522&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0100 ||      2       ||      CMSG_PARTY_LEAVE                                ||      src/net/tmwa/partyhandler.cpp:359                                                                                                       ||      src/map/clif.c:8540&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0101 ||      6       ||      SMSG_PARTY_SETTINGS                             ||      src/map/clif.c:5358                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:157&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0102 ||      6       ||      CMSG_PARTY_SETTINGS                             ||      src/net/tmwa/partyhandler.cpp:402&amp;lt;br&amp;gt;src/net/tmwa/partyhandler.cpp:412                                                                  ||      src/map/clif.c:8558&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0103 ||      30      ||      CMSG_PARTY_KICK                                 ||      src/net/tmwa/partyhandler.cpp:364&amp;lt;br&amp;gt;src/net/tmwa/partyhandler.cpp:379                                                                  ||      src/map/clif.c:8549&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0104 ||      79      ||      SMSG_PARTY_MOVE                                 ||      src/map/clif.c:5485                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:220&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0105 ||      31      ||      SMSG_PARTY_LEAVE                                ||      src/map/clif.c:5383                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:232&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0106 ||      10      ||      SMSG_PARTY_UPDATE_HP                            ||      src/map/clif.c:5463                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:263&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0107 ||      10      ||      SMSG_PARTY_UPDATE_COORDS                        ||      src/map/clif.c:5443                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:283&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0108 ||      -1      ||      CMSG_PARTY_MESSAGE                              ||      src/net/tmwa/partyhandler.cpp:386                                                                                                       ||      src/map/clif.c:8571&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0109 ||      -1      ||      SMSG_PARTY_MESSAGE                              ||      src/map/clif.c:5424                                                                                                                     ||      src/net/tmwa/partyhandler.cpp:290&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x010C ||      6       ||      SMSG_MVP                                        ||      src/map/clif.c:5708                                                                                                                     ||      src/net/tmwa/chathandler.cpp:187&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x010E ||      11      ||      SMSG_PLAYER_SKILL_UP&amp;lt;br&amp;gt;SMSG_GUILD_SKILL_UP     ||      src/map/clif.c:4186&amp;lt;br&amp;gt;src/map/clif.c:6345                                                                                              ||      src/net/tmwa/specialhandler.cpp:115&amp;lt;br&amp;gt;src/net/tmwa/guildhandler.cpp:253&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x010F ||      -1      ||      SMSG_PLAYER_SKILLS                              ||      src/map/clif.c:4145                                                                                                                     ||      src/net/tmwa/specialhandler.cpp:93&lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0110 ||      10      ||      SMSG_SKILL_FAILED                               ||      src/map/clif.c:4259                                                                                                                     ||      src/net/tmwa/specialhandler.cpp:129                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0112 ||      4       ||      CMSG_SKILL_LEVELUP_REQUEST                      ||      src/net/tmwa/playerhandler.cpp:597                                                                                                      ||      src/map/clif.c:8002                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0113 ||      10      ||      CMSG_SKILL_USE_BEING                            ||      src/net/tmwa/specialhandler.cpp:234                                                                                                     ||      src/map/clif.c:8011                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0116 ||      10      ||      CMSG_SKILL_USE_POSITION                         ||      src/net/tmwa/specialhandler.cpp:242                                                                                                     ||      src/map/clif.c:8088                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0119 ||      13      ||      SMSG_PLAYER_STATUS_CHANGE                       ||      src/map/clif.c:1268&amp;lt;br&amp;gt;src/map/clif.c:2885                                                                                              ||      src/net/tmwa/beinghandler.cpp:671                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x011B ||      20      ||      CMSG_SKILL_USE_MAP                              ||      src/net/tmwa/specialhandler.cpp:251                                                                                                     ||      src/map/clif.c:8158                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0139 ||      16      ||      SMSG_PLAYER_MOVE_TO_ATTACK                      ||      src/map/clif.c:5510                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:662                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x013A ||      4       ||      SMSG_PLAYER_ATTACK_RANGE                        ||      src/map/clif.c:2474                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:423                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x013B ||      4       ||      SMSG_PLAYER_ARROW_MESSAGE                       ||      src/map/clif.c:2780                                                                                                                     ||      src/net/tmwa/playerhandler.cpp:545                                                                      &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x013C ||      4       ||      SMSG_PLAYER_ARROW_EQUIP                         ||      src/map/clif.c:2761                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:427                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0141 ||      14      ||      SMSG_PLAYER_STAT_UPDATE_3                       ||      src/map/clif.c:2482&amp;lt;br&amp;gt;src/map/clif.c:2489&amp;lt;br&amp;gt;src/map/clif.c:2496&amp;lt;br&amp;gt;src/map/clif.c:2503&amp;lt;br&amp;gt;src/map/clif.c:2510&amp;lt;br&amp;gt;src/map/clif.c:2517  ||      src/net/tmwa/playerhandler.cpp:370                                                                      &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0142 ||      6       ||      SMSG_NPC_INT_INPUT                              ||      src/map/clif.c:1772                                                                                                                     ||      src/net/tmwa/npchandler.cpp:116                                                                         &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0143 ||      10      ||      CMSG_NPC_INT_RESPONSE                           ||      src/net/tmwa/npchandler.cpp:166                                                                                                         ||      src/map/clif.c:8215                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0146 ||      6       ||      CMSG_NPC_CLOSE                                  ||      src/net/tmwa/npchandler.cpp:146                                                                                                         ||      src/map/clif.c:8265                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0148 ||      8       ||      SMSG_BEING_RESURRECT                            ||      src/map/clif.c:4667                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:293                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0149 ||      9       ||      CMSG_ADMIN_MUTE                                 ||      src/net/tmwa/adminhandler.cpp:137                                                                                                       ||      src/map/clif.c:9025                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014C ||      -1      ||      SMSG_GUILD_ALIANCE_INFO                         ||      src/map/clif.c:5962                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:157                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014D ||      2       ||      CMSG_GUILD_CHECK_MASTER                         ||                                                                                                                                              ||      src/map/clif.c:8661                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014E ||      6       ||      SMSG_GUILD_MASTER_OR_MEMBER                     ||      src/map/clif.c:5842                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:134                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x014F ||      6       ||      CMSG_GUILD_REQUEST_INFO                         ||      src/net/tmwa/guildhandler.cpp:457                                                                                                       ||      src/map/clif.c:8670                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0151 ||      6       ||      CMSG_GUILD_REQUEST_EMBLEM                       ||                                                                                                                                              ||      src/map/clif.c:8760                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0152 ||      -1      ||      SMSG_GUILD_EMBLEM                               ||      src/map/clif.c:6135                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:243                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0153 ||      -1      ||      CMSG_GUILD_CHANGE_EMBLEM                        ||                                                                                                                                              ||      src/map/clif.c:8771                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0154 ||      -1      ||      SMSG_GUILD_MEMBER_LIST                          ||      src/map/clif.c:5996                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:171                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0155 ||      -1      ||      CMSG_GUILD_CHANGE_MEMBER_POS                    ||                                                                                                                                              ||      src/map/clif.c:8731                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0156 ||      -1      ||      SMSG_GUILD_MEMBER_POS_CHANGE                    ||      src/map/clif.c:6110                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:236                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0159 ||      54      ||      CMSG_GUILD_LEAVE                                ||      src/net/tmwa/guildhandler.cpp:425                                                                                                       ||      src/map/clif.c:8807                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015A ||      66      ||      SMSG_GUILD_LEAVE                                ||      src/map/clif.c:6252                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:322                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015B ||      54      ||      CMSG_GUILD_EXPULSION                            ||      src/net/tmwa/guildhandler.cpp:434                                                                                                       ||      src/map/clif.c:8817                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015C ||      90      ||      SMSG_GUILD_EXPULSION                            ||      src/map/clif.c:6270                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:327                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015D ||      42      ||      CMSG_GUILD_BREAK                                ||                                                                                                                                              ||      src/map/clif.c:8907                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x015E ||      6       ||      SMSG_GUILD_BROKEN                               ||      src/map/clif.c:6453                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:384                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0160 ||      -1      ||      SMSG_GUILD_POS_INFO_LIST                        ||      src/map/clif.c:6062                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:212                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0161 ||      -1      ||      CMSG_GUILD_CHANGE_POS_INFO                      ||                                                                                                                                              ||      src/map/clif.c:8704                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0162 ||      -1      ||      SMSG_GUILD_SKILL_INFO                           ||      src/map/clif.c:6160                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:253                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0163 ||      -1      ||      SMSG_GUILD_EXPULSION_LIST                       ||      src/map/clif.c:6294                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:333                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0165 ||      30      ||      CMSG_GUILD_CREATE                               ||      src/net/tmwa/guildhandler.cpp:396                                                                                                       ||      src/map/clif.c:8652                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0166 ||      -1      ||      SMSG_GUILD_POS_NAME_LIST                        ||      src/map/clif.c:6036                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:199                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0167 ||      3       ||      SMSG_GUILD_CREATE_RESPONSE                      ||      src/map/clif.c:5771                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:91                                                                        &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0168 ||      14      ||      CMSG_GUILD_INVITE                               ||      src/net/tmwa/guildhandler.cpp:408                                                                                                       ||      src/map/clif.c:8789                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0169 ||      3       ||      SMSG_GUILD_INVITE_ACK                           ||      src/map/clif.c:6235                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:288                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016A ||      30      ||      SMSG_GUILD_INVITE                               ||      src/map/clif.c:6217                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:279                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016B ||      10      ||      CMSG_GUILD_INVITE_REPLY                         ||      src/net/tmwa/guildhandler.cpp:416                                                                                                       ||      src/map/clif.c:8798                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016C ||      43      ||      SMSG_GUILD_POSITION_INFO                        ||      src/map/clif.c:5792                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:114                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016D ||      14      ||      SMSG_GUILD_MEMBER_LOGIN                         ||      src/map/clif.c:5811                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:128                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016E ||      186     ||      CMSG_GUILD_CHANGE_NOTICE                        ||                                                                                                                                              ||      src/map/clif.c:8780                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x016F ||      182     ||      SMSG_GUILD_NOTICE                               ||      src/map/clif.c:6198                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:274                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0170 ||      14      ||      CMSG_GUILD_ALLIANCE_REQUEST                     ||                                                                                                                                              ||      src/map/clif.c:8871                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0171 ||      30      ||      SMSG_GUILD_REQ_ALLIANCE                         ||      src/map/clif.c:6367                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:366                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0172 ||      10      ||      CMSG_GUILD_ALLIANCE_REPLY                       ||                                                                                                                                              ||      src/map/clif.c:8880                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0173 ||      3       ||      SMSG_GUILD_REQ_ALLIANCE_ACK                     ||      src/map/clif.c:6385                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:371                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0174 ||      -1      ||      SMSG_GUILD_POSITION_CHANGED                     ||      src/map/clif.c:6087                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:227                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x017E ||      -1      ||      CMSG_GUILD_MESSAGE                              ||      src/net/tmwa/guildhandler.cpp:443                                                                                                       ||      src/map/clif.c:8831                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x017F ||      -1      ||      SMSG_GUILD_MESSAGE                              ||      src/map/clif.c:6323&amp;lt;br&amp;gt;src/map/clif.c:6581                                                                                              ||      src/net/tmwa/guildhandler.cpp:347                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0180 ||      6       ||      CMSG_GUILD_OPPOSITION                           ||                                                                                                                                              ||      src/map/clif.c:8898                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0181 ||      3       ||      SMSG_GUILD_OPPOSITION_ACK                       ||      src/map/clif.c:6421                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:380                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0183 ||      10      ||      CMSG_GUILD_ALLIANCE_DELETE                      ||                                                                                                                                              ||      src/map/clif.c:8889                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0184 ||      10      ||      SMSG_GUILD_DEL_ALLIANCE                         ||      src/map/clif.c:6403                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:375                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x018A ||      4       ||      CMSG_CLIENT_QUIT                                ||      src/net/tmwa/gamehandler.cpp:161                                                                                                        ||      src/map/clif.c:6611                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x018B ||      4       ||      SMSG_MAP_QUIT_RESPONSE                          ||      src/map/clif.c:7012&amp;lt;br&amp;gt;src/map/clif.c:7440                                                                                              ||      src/net/tmwa/gamehandler.cpp:98                                                                         &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0190 ||      90      ||      CMSG_SKILL_USE_POSITION_MORE                    ||                                                                                                                                              ||      src/map/clif.c:8088                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0195 ||      102     ||      SMSG_PLAYER_GUILD_PARTY_INFO                    ||      src/map/clif.c:7107                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:490                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x0196 ||      9       ||      SMSG_BEING_STATUS_CHANGE                        ||      src/map/clif.c:4585                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:688                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x019B ||      10      ||      SMSG_BEING_SELFEFFECT                           ||      src/map/clif.c:2858&amp;lt;br&amp;gt;src/map/clif.c:6696                                                                                              ||      src/net/tmwa/beinghandler.cpp:372                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x019C ||      4       ||      CMSG_ADMIN_LOCAL_ANNOUNCE                       ||      src/net/tmwa/adminhandler.cpp:91                                                                                                        ||      src/map/clif.c:8350                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x019D ||      6       ||      CMSG_ADMIN_HIDE                                 ||      src/net/tmwa/adminhandler.cpp:98                                                                                                        ||      src/map/clif.c:8996                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01B1 ||      7       ||      SMSG_TRADE_ITEM_ADD_RESPONSE                    ||      src/map/clif.c:3299                                                                                                                     ||      src/net/tmwa/tradehandler.cpp:176                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01B6 ||      114     ||      SMSG_GUILD_BASIC_INFO                           ||      src/map/clif.c:5865                                                                                                                     ||      src/net/tmwa/guildhandler.cpp:138                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01C8 ||      13      ||      SMSG_PLAYER_INVENTORY_USE                       ||      src/map/clif.c:2945                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:265                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D4 ||      6       ||      SMSG_NPC_STR_INPUT                              ||      src/map/clif.c:1790                                                                                                                     ||      src/net/tmwa/npchandler.cpp:121                                                                         &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D5 ||      8       ||      CMSG_NPC_STR_RESPONSE                           ||      src/net/tmwa/npchandler.cpp:173                                                                                                         ||      src/map/clif.c:8234                                                                                     &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D7 ||      11      ||      SMSG_BEING_CHANGE_LOOKS2                        ||      src/map/clif.c:2608&amp;lt;br&amp;gt;src/map/clif.c:2675                                                                                              ||      src/net/tmwa/beinghandler.cpp:401                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D8 ||      54      ||      SMSG_PLAYER_UPDATE_1                            ||      src/map/clif.c:845                                                                                                                      ||      src/net/tmwa/beinghandler.cpp:511                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01D9 ||      53      ||      SMSG_PLAYER_UPDATE_2                            ||      src/map/clif.c:1292                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:512                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01DA ||      60      ||      SMSG_PLAYER_MOVE                                ||      src/map/clif.c:934                                                                                                                      ||      src/net/tmwa/beinghandler.cpp:513                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01DE ||      33      ||      SMSG_SKILL_DAMAGE                               ||      src/map/clif.c:4298                                                                                                                     ||      src/net/tmwa/beinghandler.cpp:311                                                                       &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01EE ||      -1      ||      SMSG_PLAYER_INVENTORY                           ||      src/map/clif.c:1965                                                                                                                     ||      src/net/tmwa/inventoryhandler.cpp:134                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x01F0 ||      -1      ||      SMSG_PLAYER_STORAGE_ITEMS                       ||      src/map/clif.c:2097&amp;lt;br&amp;gt;src/map/clif.c:2225                                                                                              ||      src/net/tmwa/inventoryhandler.cpp:135                                                                   &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x020C ||      10      ||      SMSG_ADMIN_IP                                   ||      src/map/clif.c:7120                                                                                                                     ||      src/net/tmwa/adminhandler.cpp:69                                                                        &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x7530 ||      2       ||      CMSG_SERVER_VERSION_REQUEST                     ||      src/net/tmwa/loginhandler.cpp:220                                                                                                       ||      src/login/login.c:2257&amp;lt;br&amp;gt;src/login/login.c:4011&amp;lt;br&amp;gt;src/char/char.c:3568&amp;lt;br&amp;gt;src/map/clif.c:10174        &lt;br /&gt;
|-valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|0x7531 ||      10      ||      SMSG_SERVER_VERSION_RESPONSE                    ||      src/login/login.c:2260&amp;lt;br&amp;gt;src/login/login.c:4014&amp;lt;br&amp;gt;src/char/char.c:3569&amp;lt;br&amp;gt;src/map/clif.c:10175                                        ||      src/net/tmwa/loginhandler.cpp:197                                                                       &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Free Packets ==&lt;br /&gt;
These are packets that are not parsed or sent by the client, but have a known length, so they can be used by future servers and the client will just ignore them, not crash.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
!packet !!len   !!notes&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0000 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0074 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0075 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0076 ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0077 ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0079 ||53    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x007A ||58    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0082 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0083 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0084 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x008B ||23    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0093 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00A3 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00A5 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00AE ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00BA ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00CE ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00CF ||27    ||clif_parse_PMIgnore&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D0 ||3     ||clif_parse_PMIgnoreAll, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D1 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D2 ||4     ||used by ManaPlus (sent from atcommand.cpp)&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D3 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D4 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D5 ||-1    ||clif_parse_CreateChatRoom&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D6 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D7 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D8 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00D9 ||14    ||clif_parse_ChatAddMember&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DA ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DB ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DC ||28    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DD ||29    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DE ||-1    ||clif_parse_ChatRoomStatusChange&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00DF ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E0 ||30    ||clif_parse_ChangeChatOwner&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E1 ||30    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E2 ||26    ||clif_parse_KickFromChat&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00E3 ||2     ||clif_parse_ChatLeave&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00EA ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x00F1 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x010A ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x010B ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x010D ||2     ||clif_parse_RequestMemo&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0111 ||39    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0114 ||31    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0115 ||35    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0117 ||18    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0118 ||2     ||clif_parse_StopAttack, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011A ||15    ||SMSG_SKILL_NO_DAMAGE, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011C ||68    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011D ||2     ||clif_parse_RequestMemo&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011E ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x011F ||16    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0120 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0121 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0122 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0123 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0124 ||21    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0125 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0126 ||8     ||clif_parse_PutItemToCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0127 ||8     ||clif_parse_GetItemFromCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0128 ||8     ||clif_parse_MoveFromKafraToCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0129 ||8     ||clif_parse_MoveToKafraFromCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012A ||2     ||clif_parse_RemoveOption&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012B ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012C ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012D ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012E ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x012F ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0130 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0131 ||86    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0132 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0133 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0134 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0135 ||7     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0136 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0137 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0138 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x013D ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x013E ||24    ||SMSG_SKILL_CASTING, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x013F ||26    ||clif_parse_GM_Monster_Item&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0140 ||22    ||clif_parse_MapMove&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0144 ||23    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0145 ||19    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0147 ||39    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x014A ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x014B ||27    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0150 ||110   ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0157 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0158 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x015F ||42    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0164 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0175 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0176 ||106   ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0177 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0178 ||4     ||clif_parse_ItemIdentify&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0179 ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017A ||4     ||clif_parse_UseCard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017B ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017C ||6     ||clif_parse_InsertCard&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x017D ||7     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0182 ||106   ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0185 ||34    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0187 ||6     ||src/char/char.c:3562&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0188 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0189 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018C ||29    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018D ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018E ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x018F ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0191 ||86    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0192 ||24    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0193 ||6     ||clif_parse_SolveCharName&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0194 ||30    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0197 ||4     ||clif_parse_ResetChar&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0198 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0199 ||4     ||SMSG_PVP_MAP_MODE, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x019A ||14    ||SMSG_PVP_SET, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x019E ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x019F ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A0 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A1 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A2 ||35    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A3 ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A4 ||11    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A5 ||26    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A6 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A7 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A8 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01A9 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AA ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AB ||12    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AC ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AD ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AE ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01AF ||4     ||clif_parse_ChangeCart&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B0 ||11    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B2 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B3 ||67    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B4 ||12    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B5 ||18    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B7 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B8 ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01B9 ||6     ||SMSG_SKILL_CAST_CANCEL, used by ManaPlus&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BA ||26    ||clif_parse_Shift&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BB ||26    ||clif_parse_Shift&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BC ||26    ||clif_parse_Recall&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BD ||26    ||clif_parse_Recall&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BE ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01BF ||3     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C0 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C1 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C2 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C3 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C4 ||22    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C5 ||22    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C6 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C7 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01C9 ||97    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CB ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CC ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CD ||29    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CE ||6     ||clif_parse_AutoSpell&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01CF ||28    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D0 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D1 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D2 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D3 ||35    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01D6 ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DB ||2     ||src/login/login.c:3861&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DC ||-1    ||src/login/login.c:3898&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DD ||47    ||src/login/login.c:3645&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01DF ||6     ||clif_parse_GMReqNoChatCount&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E0 ||30    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E1 ||8     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E2 ||34    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E3 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E4 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E5 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E6 ||26    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E7 ||2     ||clif_parse_sn_doridori&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E8 ||28    ||clif_parse_CreateParty2&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01E9 ||81    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EA ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EB ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EC ||26    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01ED ||2     ||clif_parse_sn_explosionspirits&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01EF ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F1 ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F2 ||20    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F3 ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F4 ||32    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F5 ||9     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F6 ||34    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F7 ||14    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F8 ||2     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01F9 ||6     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FA ||48    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FB ||56    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FC ||-1    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FD ||4     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FE ||5     ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x01FF ||10    ||&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0200 ||26    ||src/login/login.c:3632&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x0204 ||18    ||src/login/login.c:3638&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot; &lt;br /&gt;
|0x020B ||19    ||src/char/char.c:3030&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Internal Packets ==&lt;br /&gt;
These packets are sent between the servers. Details are subject to change without notice.&lt;br /&gt;
&lt;br /&gt;
=== login - char ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Net:0x2716|mode=row_internal}}&lt;br /&gt;
{{Net:0x2717|mode=row_internal}}&lt;br /&gt;
{{Net:0x2740|mode=row_internal}}&lt;br /&gt;
{{Net:0x2741|mode=row_internal}}&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== login - admin ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{Net:0x2716|mode=row_internal}} --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== char - map ===&lt;br /&gt;
&amp;lt;table border=&amp;quot;1&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;3&amp;quot; class=&amp;quot;wikitable sortable&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr valign=&amp;quot;top&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;th&amp;gt;Packet&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Length&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Name&amp;lt;/th&amp;gt; &amp;lt;th&amp;gt;Sent and Parsed Locations&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- {{Net:0x2716|mode=row_internal}} --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== inter.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3000 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3001 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3002 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3003 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3004 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3005 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3010 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3011 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3018 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3019 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3020 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 72 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3021 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3022 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 52 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3023 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3024 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3025 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 29 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3026 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3027 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3028 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 34 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3030 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3031 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3032 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3034 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 55 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3035 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 19 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3036 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3037 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3038 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3039 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303a &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303b &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303c &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303d &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 19 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303e &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 186 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x303f &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3040 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 5 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3041 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3080 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 48 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3081 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3082 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3083 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== intif.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3800 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3801 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3802 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 27 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3803 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3804 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3810 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3811 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3818 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3819 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3820 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 35 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3821 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3822 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3823 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3824 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 34 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3825 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 29 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3826 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3827 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3830 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3831 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3832 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 15 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3834 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 79 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3835 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 19 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3836 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3837 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3839 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383a &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383b &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383c &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 14 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383d &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 67 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383e &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 186 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x383f &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3840 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3841 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 9 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3842 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3880 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3881 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3882 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x3883 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== chrif.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2af8 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 60 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2af9 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 3 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afa &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afb &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 27 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afc &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 22 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afd &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2afe &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2aff &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b00 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b01 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b02 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 18 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b03 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b04 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b05 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 49 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b06 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 44 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b08 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b09 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 30 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0a &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0b &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0c &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 86 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0d &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 7 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0e &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 44 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b0f &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 34 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b10 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b11 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b12 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 10 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b13 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 6 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b14 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; 11 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt; &amp;lt;td&amp;gt; 0x2b15 &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt; -1 &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== char.cpp recv ====&lt;br /&gt;
&amp;lt;table&amp;gt;&lt;br /&gt;
&amp;lt;!-- 0x2af7 .. 0x2b16 --&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Gshlvr&amp;diff=28975</id>
		<title>User talk:Gshlvr</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Gshlvr&amp;diff=28975"/>
		<updated>2013-12-04T00:45:41Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 00:45, 4 December 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Gshlvr&amp;diff=28974</id>
		<title>User:Gshlvr</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Gshlvr&amp;diff=28974"/>
		<updated>2013-12-04T00:45:39Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Ron is a young adult male born in Florida, USA and currently residing in the Tampa Bay area of Florida. He is in the process of acquiring his Associates degree with a focus on engineering and hopes to one day be employed in the computer software industry.&lt;br /&gt;
&lt;br /&gt;
    His interests include art, horticulture, political science, biology, philosophy, technology, linguistics and futurology.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Oddshocks&amp;diff=28923</id>
		<title>User talk:Oddshocks</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User_talk:Oddshocks&amp;diff=28923"/>
		<updated>2013-11-29T19:30:45Z</updated>

		<summary type="html">&lt;p&gt;O11c: Welcome!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to &#039;&#039;TheManaWorld&#039;&#039;!&#039;&#039;&#039;&lt;br /&gt;
We hope you will contribute much and well.&lt;br /&gt;
You will probably want to read the [[Help:Contents|help pages]].&lt;br /&gt;
Again, welcome and have fun! [[User_talk:o11c|o]][[User:o11c|11]][[Special:Contributions/o11c|c]] 19:30, 29 November 2013 (UTC)&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=User:Oddshocks&amp;diff=28922</id>
		<title>User:Oddshocks</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=User:Oddshocks&amp;diff=28922"/>
		<updated>2013-11-29T19:30:44Z</updated>

		<summary type="html">&lt;p&gt;O11c: Creating user page for new user.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;David Gay is a free software hacker living in Rochester, NY. He will complete his bachelor&#039;s degree in Information Technology at Rochester Institute of Technology mid-2014, whereupon he plans to move to Seattle, WA. David is an avid supporter of free and open source software and is a captain at the RIT Lab for Technological Literacy, AKA the FOSSBox. He also does independent web development contracting. When he isn&#039;t being pestered by silly coursework, he enjoys writing code, reading about software, and listening to jam rock bands like the Grateful Dead. He has already contributed a thing or two to The Mana World, but hopes to do much more in the future as he gets a feel for the game.&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
	<entry>
		<id>https://oldwiki.devbox.themanaworld.org/index.php?title=Set_up_a_Server&amp;diff=28891</id>
		<title>Set up a Server</title>
		<link rel="alternate" type="text/html" href="https://oldwiki.devbox.themanaworld.org/index.php?title=Set_up_a_Server&amp;diff=28891"/>
		<updated>2013-11-21T20:57:11Z</updated>

		<summary type="html">&lt;p&gt;O11c: replace yet another outdated &amp;quot;how to&amp;quot; page with a link to the real one&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Dev:How to Develop]]&lt;/div&gt;</summary>
		<author><name>O11c</name></author>
	</entry>
</feed>