<?xml version="1.0"?>
<rss version="2.0"><channel><title>DBC handling for mangos</title><link>https://www.getmangos.eu/blogs/blog/2-dbc-handling-for-mangos/</link><description><![CDATA[
<p>
	Due to a recent disaster, I lost some of my work and also my design notes so i'm going to have to redo the work and decided that I would attempt to also document how i'm doing here !!
</p>
]]></description><language>en</language><item><title>Day 4: Final Touches.</title><link>https://www.getmangos.eu/blogs/entry/8-day-4-final-touches/</link><description><![CDATA[<p>
	I have put the final touches to the DBC wiki exporter and if you look at the wiki section for DBC files (for Zero Only ATM) you will see the results.
</p>

<p>
	The DBC databases will end up in a github repo soon and I'll post the URL here.
</p>

<p>
	Any comments or suggestions, please let me know.
</p>

<p>
	The next stage of this project is a dbcDocs editor. I have the skeleton of this designed and just need to find the time to complete it.
</p>

<p>
	It will have two modes of operation: local and remote
</p>

<p>
	Local edits a local dbcDocs database
</p>

<p>
	Remote edits the <abbr title="Massive Network Game Object Server">mangos</abbr> hosted dbcDocs database
</p>
]]></description><guid isPermaLink="false">8</guid><pubDate>Wed, 17 Aug 2016 12:10:00 +0000</pubDate></item><item><title>Day 3: Realisations and redesign time</title><link>https://www.getmangos.eu/blogs/entry/7-day-3-realisations-and-redesign-time/</link><description><![CDATA[<p>
	The Wiki is the one area where a majority of information is cross core applicable.
</p>

<p>
	- During my testing a came across a few problems.
</p>

<p>
	in the dbcField table we recorded the dbc File, fieldname, description and field position but this hid a more fundamental problem.<br>
	- Different cores have the same field with the same meaning, but in a different position. The current DB design would mean that the description information would have to be entered multiple times - each time the field was in a different location.
</p>

<p>
	So.... A db redesign was needed.
</p>

<p>
	I created a new dbcFieldDescriptions table, containing the following fields:<br>
	dbcFieldDescriptionId, dbcFileName, dbcFieldName, dbcFieldDescription, dbcFieldNotes
</p>

<p>
	Then modified the dbcField table by adding a dbcFieldDescriptionId and removing dbcFieldName, dbcFieldDescription and dbcFieldNotes.
</p>

<p>
	I'll post the table defs later on, now time for some more testing.
</p>
]]></description><guid isPermaLink="false">7</guid><pubDate>Fri, 29 Jul 2016 10:56:40 +0000</pubDate></item><item><title>Day 2: Working with the data</title><link>https://www.getmangos.eu/blogs/entry/6-day-2-working-with-the-data/</link><description><![CDATA[<p>
	Now that we had the data in the DB it was time for the next step.
</p>

<p>
	I wrote a quick app to read through the DBC table entries and add an entry to dbcFile, I also wrote a helper function to calculate the client masks based on the selected core.
</p>

<p>
	Worked like a dream <img alt=":D" data-emoticon="" height="20" src="https://www.getmangos.eu/uploads/emoticons/biggrin.png" srcset="https://www.getmangos.eu/uploads/emoticons/biggrin@2x.png 2x" title=":D" width="20"></p>

<p>
	I then extended it to use the second query to populate the dbcField table with the fields from each dbc file.
</p>

<p>
	Next I also added a function to read the DBC_definition.xml from <abbr title="Massive Network Game Object Server">mangos</abbr> extractor to populate any additional information held in the file regarding the fields.
</p>

<p>
	Finally to top off this section of work, I created a template example in the new wiki so that I could:<br>
	a) Check that it looks ok<br>
	b) Can double check that the data is extracted ok
</p>

<p>
	Next stage will be run the entire process to squirt the data out and create all the entries.
</p>

<p><a href="https://www.getmangos.eu/uploads/monthly_2016_07/Wiki_original.png.bc47062970ba7ac717be336e0461bc31.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="209" src="https://www.getmangos.eu/uploads/monthly_2016_07/Wiki_original.thumb.png.424e8e2a42f39154e8464b63306beb5c.png" class="ipsImage ipsImage_thumbnailed" alt="Wiki_original.png"></a></p>
<p><a href="https://www.getmangos.eu/uploads/monthly_2016_07/Wiki_new.png.6673c0edb6d813daa3b9a972d174248a.png" class="ipsAttachLink ipsAttachLink_image"><img data-fileid="210" src="https://www.getmangos.eu/uploads/monthly_2016_07/Wiki_new.thumb.png.6e242f8091620690f2cefc79d323fec9.png" class="ipsImage ipsImage_thumbnailed" alt="Wiki_new.png"></a></p>]]></description><guid isPermaLink="false">6</guid><pubDate>Wed, 27 Jul 2016 10:18:01 +0000</pubDate></item><item><title>Day 1: Querying the DB</title><link>https://www.getmangos.eu/blogs/entry/5-day-1-querying-the-db/</link><description><![CDATA[<p>
	Now that we have a majority of the data already in the Database, we now need to work out how to get meaningful information back out !
</p>

<p>
	Thankfully MySQL does provide us with a way of doing this. In the following example my main database containing the DBC data and we are going to query for records for MangosZero - so tables beginning dbc0_
</p>

<pre class="ipsCode prettyprint prettyprinted">
<span class="pln">SELECT DISTINCT TABLE_NAME AS </span><span>DBCFilename</span><span class="pln"> FROM information_schema</span><span class="pun">.</span><span class="pln">columns
WHERE table_schema </span><span class="pun">=</span><span class="pln"> </span><span class="str">'dbc'</span><span class="pln"> AND table_name LIKE </span><span class="str">'dbc0_%'</span><span class="pln">
</span></pre>

<p>
	This returns a nice list of DBC filenames belonging to Zero, we can easily write a tool to read through that list and process the information.
</p>

<p>
	<strong>DBCFilename</strong><br>
	dbc0_animationdata<br>
	dbc0_areapoi
</p>

<p>
	For the purpose of a demonstration of how to get the field information for a certain table, see the following query. Again we are using the database 'dbc' but this time we are looking for a specific table (dbc0_animationdata)
</p>

<pre class="ipsCode prettyprint prettyprinted">
<span class="pln">SELECT COLUMN_NAME</span><span class="pun">,</span><span class="pln">ORDINAL_POSITION</span><span class="pun">,</span><span class="pln">DATA_TYPE</span><span class="pun">,</span><span class="pln">COLUMN_TYPE FROM information_schema</span><span class="pun">.</span><span class="pln">columns
WHERE table_schema </span><span class="pun">=</span><span class="pln"> </span><span class="str">'dbc'</span><span class="pln"> AND table_name </span><span class="pun">=</span><span class="pln"> </span><span class="str">'dbc0_animationdata%'</span></pre>

<p>
	This returns the following:
</p>

<pre class="ipsCode prettyprint lang-html prettyprinted">
<span class="pln">"COLUMN_NAME"         "ORDINAL_POSITION"    "DATA_TYPE"    "COLUMN_TYPE"
"AnimationDataId"            "1"               "int"         "int(11)"
"Name"                       "2"               "text"        "text"
"WeaponFlags"                "3"               "int"         "int(11)"
"Bodyflags"                  "4"               "int"         "int(11)"
"Flags"                      "5"               "int"         "int(11)"
"FallbackAnimationDataId"    "6"               "int"         "int(11)"
"PreviousAnimationDataId"    "7"               "int"         "int(11)"</span></pre>

<p>
	For the guts of the data we need, this is everything we need... until next time
</p>
]]></description><guid isPermaLink="false">5</guid><pubDate>Tue, 26 Jul 2016 13:28:18 +0000</pubDate></item><item><title>Day 1: DB table design</title><link>https://www.getmangos.eu/blogs/entry/4-day-1-db-table-design/</link><description><![CDATA[<p>
	Lets start with the basics...
</p>

<p>
	For each DBC File we want to store the following information
</p>

<p>
	A unique Id for this file (primary key and autonumber).<br>
	The Filename.<br>
	A short description of what the File is/does.<br>
	Some notes about the File.<br>
	Which client(s) it's present in.<br>
	Whether <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">MaNGOS</abbr></abbr></abbr> actually uses the file.<br>
	Whether to show the contents of the file in the wiki.
</p>

<p>
	so the SQL table definition will be:
</p>

<pre class="ipsCode prettyprint prettyprinted">
<span class="com">/*Table structure for table `dbcfile` */</span><span class="pln">

CREATE TABLE </span><span class="str">`dbcfile`</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
  </span><span class="str">`DbcId`</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">(</span><span class="lit">11</span><span class="pun">)</span><span class="pln"> NOT NULL AUTO_INCREMENT COMMENT </span><span class="str">'Unique Key for this file'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcFilename`</span><span class="pln"> varchar</span><span class="pun">(</span><span class="lit">250</span><span class="pun">)</span><span class="pln"> NOT NULL COMMENT </span><span class="str">'The Name of the DBC File'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcDescription`</span><span class="pln"> varchar</span><span class="pun">(</span><span class="lit">250</span><span class="pun">)</span><span class="pln"> DEFAULT NULL COMMENT </span><span class="str">'A Brief Description of the DBC File'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcNotes`</span><span class="pln"> text COMMENT </span><span class="str">'Notes about the DBC File'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`ClientMaskId`</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">(</span><span class="lit">11</span><span class="pun">)</span><span class="pln"> NOT NULL COMMENT </span><span class="str">'A Lookup into the ClientMasks Table'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`IsIncluded`</span><span class="pln"> tinyint</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln"> DEFAULT </span><span class="str">'1'</span><span class="pln"> COMMENT </span><span class="str">'Whether this DBC file is used in <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">MaNGOS</abbr></abbr></abbr>'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`IsShownInWiki`</span><span class="pln"> tinyint</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln"> DEFAULT </span><span class="str">'0'</span><span class="pln"> COMMENT </span><span class="str">'Is the File shown in the Wiki'</span><span class="pun">,</span><span class="pln">
  PRIMARY KEY </span><span class="pun">(</span><span class="str">`DbcId`</span><span class="pun">)</span><span class="pln">
</span><span class="pun">)</span><span class="pln"> ENGINE</span><span class="pun">=</span><span>InnoDB</span><span class="pln"> AUTO_INCREMENT</span><span class="pun">=</span><span class="lit">2</span><span class="pln"> DEFAULT CHARSET</span><span class="pun">=</span><span class="pln">utf8</span><span class="pun">;</span></pre>

<p>
	<br>
	Then we need to store information about all the fields in the file
</p>

<p>
	A unique Id for this field (primary key and autonumber)<br>
	A link to the DBC file this field belongs to.<br>
	The name of the field.<br>
	A Brief Description of the Field.<br>
	A note about the field.<br>
	The position of the field in the file (i.e. the order of the fields)<br>
	Which client(s) it's present in.<br>
	Whether <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">MaNGOS</abbr></abbr></abbr> actually uses the field.<br>
	Whether to show the contents of the field in the wiki.
</p>

<p>
	so the SQL table definition will be:
</p>

<pre class="ipsCode prettyprint prettyprinted">
<span class="com">/*Table structure for table `dbcfield` */</span><span class="pln">

CREATE TABLE </span><span class="str">`dbcfield`</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
  </span><span class="str">`DbcFieldId`</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">(</span><span class="lit">11</span><span class="pun">)</span><span class="pln"> NOT NULL AUTO_INCREMENT COMMENT </span><span class="str">'A Unique Id for this field'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcId`</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">(</span><span class="lit">11</span><span class="pun">)</span><span class="pln"> NOT NULL COMMENT </span><span class="str">'A Lookup into table dbcFile'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcFieldName`</span><span class="pln"> varchar</span><span class="pun">(</span><span class="lit">250</span><span class="pun">)</span><span class="pln"> NOT NULL COMMENT </span><span class="str">'The Name of the field'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcFieldDescription`</span><span class="pln"> varchar</span><span class="pun">(</span><span class="lit">250</span><span class="pun">)</span><span class="pln"> DEFAULT NULL COMMENT </span><span class="str">'A Brief Description of the Field'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcFieldNote`</span><span class="pln"> text COMMENT </span><span class="str">'A Longer Description of the field'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`DbcFieldOrder`</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">(</span><span class="lit">11</span><span class="pun">)</span><span class="pln"> DEFAULT NULL COMMENT </span><span class="str">'The position of the field in the file'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`ClientMaskId`</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">(</span><span class="lit">11</span><span class="pun">)</span><span class="pln"> DEFAULT NULL COMMENT </span><span class="str">'A Lookup into the Table ClientMask'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`IsIncluded`</span><span class="pln"> tinyint</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln"> DEFAULT </span><span class="str">'1'</span><span class="pln"> COMMENT </span><span class="str">'Indicates whether this field is used in <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">Mangos</abbr></abbr>'</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`IsShownInWiki`</span><span class="pln"> tinyint</span><span class="pun">(</span><span class="lit">1</span><span class="pun">)</span><span class="pln"> DEFAULT </span><span class="str">'0'</span><span class="pln"> COMMENT </span><span class="str">'Indicate whether this field is shown on the wiki'</span><span class="pun">,</span><span class="pln">
  PRIMARY KEY </span><span class="pun">(</span><span class="str">`DbcFieldId`</span><span class="pun">)</span><span class="pln">
</span><span class="pun">)</span><span class="pln"> ENGINE</span><span class="pun">=</span><span>InnoDB</span><span class="pln"> AUTO_INCREMENT</span><span class="pun">=</span><span class="lit">8</span><span class="pln"> DEFAULT CHARSET</span><span class="pun">=</span><span class="pln">utf8</span><span class="pun">;</span></pre>

<p>
	<br>
	Rather than storing multiple entries of the files and fields for different clients, a cleaner method it to use a bit mask.
</p>

<p>
	In this mask each client is given a unique value and multiple values can to added together when needed, for example:
</p>

<p>
	Vanilla / Classic = 1<br>
	TBC                 = 2<br>
	WotLK              = 4<br>
	Cata                 = 8<br>
	Mop                  = 16<br>
	Wod                 = 32
</p>

<p>
	<br>
	To set a file as only present in Vanilla, you would set it's ClientMaskId = 1<br>
	To set a file as only being present in Vanilla and TBC, you would set it's ClientMaskId = 3   (1+2<br>
	To set a file as only being present in Mop and Wod, you would set it' clientMaskId = 48    (16 + 32)<br>
	 
</p>

<p>
	The ClientMask table has the following fields:<br><br>
	A ClientMaskId which is the primary Key and an autonumber field<br>
	ClientMaskName which contains a description of what the clients the mask supports<br>
	ClientMaskValue a list of the different bits needed to make this mask<br><br>
	so the SQL table definition will be:
</p>

<pre class="ipsCode prettyprint prettyprinted">
<span class="com">/*Table structure for table `clientmask` */</span><span class="pln">

CREATE TABLE </span><span class="str">`clientmask`</span><span class="pln"> </span><span class="pun">(</span><span class="pln">
  </span><span class="str">`ClientMaskId`</span><span class="pln"> </span><span class="kwd">int</span><span class="pun">(</span><span class="lit">10</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">unsigned</span><span class="pln"> NOT NULL</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`ClientMaskName`</span><span class="pln"> varchar</span><span class="pun">(</span><span class="lit">50</span><span class="pun">)</span><span class="pln"> NOT NULL</span><span class="pun">,</span><span class="pln">
  </span><span class="str">`ClientMaskValue`</span><span class="pln"> varchar</span><span class="pun">(</span><span class="lit">50</span><span class="pun">)</span><span class="pln"> NOT NULL</span><span class="pun">,</span><span class="pln">
  PRIMARY KEY </span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">)</span><span class="pln">
</span><span class="pun">)</span><span class="pln"> ENGINE</span><span class="pun">=</span><span>InnoDB</span><span class="pln"> DEFAULT CHARSET</span><span class="pun">=</span><span class="pln">utf8</span><span class="pun">;</span></pre>

<p>
	And finally for this chunk, the actual Client Mask Entries:<br>
	 
</p>

<pre class="ipsCode prettyprint prettyprinted">
<span class="com">/*Data for the table `clientmask` */</span><span class="pln">
LOCK TABLES </span><span class="str">`clientmask`</span><span class="pln"> WRITE</span><span class="pun">;</span><span class="pln">

insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">0</span><span class="pun">,</span><span class="str">'NONE'</span><span class="pun">,</span><span class="str">'0x00'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">1</span><span class="pun">,</span><span class="str">'Classic'</span><span class="pun">,</span><span class="str">'0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">2</span><span class="pun">,</span><span class="str">'TBC'</span><span class="pun">,</span><span class="str">'0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">3</span><span class="pun">,</span><span class="str">'Classic + TBC'</span><span class="pun">,</span><span class="str">'0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">4</span><span class="pun">,</span><span class="str">'Wotlk'</span><span class="pun">,</span><span class="str">'0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">5</span><span class="pun">,</span><span class="str">'Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">6</span><span class="pun">,</span><span class="str">'Wotlk + TBC'</span><span class="pun">,</span><span class="str">'0x04+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">7</span><span class="pun">,</span><span class="str">'Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">8</span><span class="pun">,</span><span class="str">'Cata'</span><span class="pun">,</span><span class="str">'0x08'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">9</span><span class="pun">,</span><span class="str">'Cata + Classic'</span><span class="pun">,</span><span class="str">'0x08+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">10</span><span class="pun">,</span><span class="str">'Cata + TBC'</span><span class="pun">,</span><span class="str">'0x08+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">11</span><span class="pun">,</span><span class="str">'Cata + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x08+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">12</span><span class="pun">,</span><span class="str">'Cata + Wotlk'</span><span class="pun">,</span><span class="str">'0x08+0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">13</span><span class="pun">,</span><span class="str">'Cata + Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x08+0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">14</span><span class="pun">,</span><span class="str">'Cata + Wotlk + TBC'</span><span class="pun">,</span><span class="str">'0x08+0x04+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">15</span><span class="pun">,</span><span class="str">'Cata + Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x08+0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">16</span><span class="pun">,</span><span class="str">'Mop'</span><span class="pun">,</span><span class="str">'0x16'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">17</span><span class="pun">,</span><span class="str">'Mop + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">18</span><span class="pun">,</span><span class="str">'Mop + TBC'</span><span class="pun">,</span><span class="str">'0x16+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">19</span><span class="pun">,</span><span class="str">'Mop + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">20</span><span class="pun">,</span><span class="str">'Mop + Wotlk'</span><span class="pun">,</span><span class="str">'0x16+0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">21</span><span class="pun">,</span><span class="str">'Mop + Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">22</span><span class="pun">,</span><span class="str">'Mop + Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">23</span><span class="pun">,</span><span class="str">'Mop + Cata'</span><span class="pun">,</span><span class="str">'0x16+0x08'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">24</span><span class="pun">,</span><span class="str">'Mop + Cata + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x08+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">25</span><span class="pun">,</span><span class="str">'Mop + Cata + TBC'</span><span class="pun">,</span><span class="str">'0x16+0x08+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">26</span><span class="pun">,</span><span class="str">'Mop + Cata + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x08+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">27</span><span class="pun">,</span><span class="str">'Mop + Cata + Wotlk'</span><span class="pun">,</span><span class="str">'0x16+0x08+0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">28</span><span class="pun">,</span><span class="str">'Mop + Cata + Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x08+0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">29</span><span class="pun">,</span><span class="str">'Mop + Cata + Wotlk + TBC'</span><span class="pun">,</span><span class="str">'0x16+0x08+0x04+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">30</span><span class="pun">,</span><span class="str">'Mop + Cata + Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x16+0x08+0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">32</span><span class="pun">,</span><span class="str">'WoD'</span><span class="pun">,</span><span class="str">'0x32'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">33</span><span class="pun">,</span><span class="str">'WoD + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">34</span><span class="pun">,</span><span class="str">'WoD + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">35</span><span class="pun">,</span><span class="str">'WoD + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">36</span><span class="pun">,</span><span class="str">'WoD + Wotlk'</span><span class="pun">,</span><span class="str">'0x32+0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">37</span><span class="pun">,</span><span class="str">'WoD + Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">38</span><span class="pun">,</span><span class="str">'WoD + Wotlk + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x04+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">39</span><span class="pun">,</span><span class="str">'WoD + Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">40</span><span class="pun">,</span><span class="str">'WoD + Cata'</span><span class="pun">,</span><span class="str">'0x32+0x08'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">41</span><span class="pun">,</span><span class="str">'WoD + Cata + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x08+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">42</span><span class="pun">,</span><span class="str">'WoD + Cata + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x08+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">43</span><span class="pun">,</span><span class="str">'WoD + Cata + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x08+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">44</span><span class="pun">,</span><span class="str">'WoD + Cata + Wotlk'</span><span class="pun">,</span><span class="str">'0x32+0x08+0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">45</span><span class="pun">,</span><span class="str">'WoD + Cata + Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x08+0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">46</span><span class="pun">,</span><span class="str">'WoD + Cata + Wotlk + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x08+0x04+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">47</span><span class="pun">,</span><span class="str">'WoD + Cata + Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x08+0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">48</span><span class="pun">,</span><span class="str">'WoD + Mop'</span><span class="pun">,</span><span class="str">'0x32+0x16'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">49</span><span class="pun">,</span><span class="str">'WoD + Mop + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">50</span><span class="pun">,</span><span class="str">'WoD + Mop + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">51</span><span class="pun">,</span><span class="str">'WoD + Mop + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">52</span><span class="pun">,</span><span class="str">'WoD + Mop + Wotlk'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">53</span><span class="pun">,</span><span class="str">'WoD + Mop + Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">54</span><span class="pun">,</span><span class="str">'WoD + Mop + Wotlk + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x04+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">55</span><span class="pun">,</span><span class="str">'WoD + Mop + Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">56</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">57</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">58</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">59</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08+0x02+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">60</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata + Wotlk'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08+0x04'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">61</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata + Wotlk + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08+0x04+0x01'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">62</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata + Wotlk + TBC'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08+0x04+0x02'</span><span class="pun">);</span><span class="pln">
insert  </span><span class="kwd">into</span><span class="pln"> </span><span class="str">`clientmask`</span><span class="pun">(</span><span class="str">`ClientMaskId`</span><span class="pun">,</span><span class="str">`ClientMaskName`</span><span class="pun">,</span><span class="str">`ClientMaskValue`</span><span class="pun">)</span><span class="pln"> values </span><span class="pun">(</span><span class="lit">63</span><span class="pun">,</span><span class="str">'WoD + Mop + Cata + Wotlk + TBC + Classic'</span><span class="pun">,</span><span class="str">'0x32+0x16+0x08+0x04+0x02+0x01'</span><span class="pun">);</span><span class="pln">

UNLOCK TABLES</span><span class="pun">;</span></pre>

<p>
	 
</p>
]]></description><guid isPermaLink="false">4</guid><pubDate>Tue, 26 Jul 2016 10:21:00 +0000</pubDate></item><item><title>Day 1: getting the data into a DB</title><link>https://www.getmangos.eu/blogs/entry/3-day-1-getting-the-data-into-a-db/</link><description><![CDATA[<p>
	Using the tool <abbr title="Massive Network Game Object Server">Mangos</abbr> Extractor, I have extracted the DBC's from MangosZero, MangosOne, MangosTwo and MangosThree
</p>

<p>
	- I made a slight change to each of the files to change the tablenames from dbc_xxxx to dbc0_xxx - which 0 is the core number
</p>

<p>
	I then loaded then all into a new database a created called DBC (imaginative I know :D)
</p>

<p>
	 
</p>

<p>
	The next part is mainly for use with the Wiki part of the project, but is applicable to all.
</p>

<p>
	For Each core in the DB we need to:<br>
	- Get a list of all the tables and store them in a dbcFiles table along with which core they belong to<br>
	- Get a list of all the fields and properites in the tables and store them in a dbcField table along with which core they belong to
</p>

<p>
	For now, that should enough to have a proper proof on concept
</p>

<p>
	I'll add at this point that I am also working to incorporate localised client DBC files into this as well
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">3</guid><pubDate>Tue, 26 Jul 2016 09:54:40 +0000</pubDate></item><item><title>Day 1: starting out new</title><link>https://www.getmangos.eu/blogs/entry/2-day-1-starting-out-new/</link><description><![CDATA[<p>
	For many many years now I have found the DBC handling in <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">MaNGOS</abbr></abbr> odd in that (to me at least) it is a perfect candidate for moving the data into a database, but has always been shunned
</p>

<p>
	Using the <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">Mangos</abbr></abbr> Extractor (found in the MangosTools github repo), the data can be extracted into sql files which can then be loaded into the db.
</p>

<p>
	Why bother you may ask ?
</p>

<p>
	1) Having the data in a db and <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">mangos</abbr></abbr> access it from there means that the facility to correct DBC 'bugs/errors' on the server becomes an option, rather than having 'hacks' in the code to correct them
</p>

<p>
	2) Having the data in a DB means that <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">Mangos</abbr></abbr> DB references can be compared to DBC references 'on the fly' to check for any discrepancies.
</p>

<p>
	3) The Wiki needs the basic information regarding DBC use and fields anyway.
</p>

<p>
	 
</p>

<p>
	I had started on a design for this late last year - Which is why there is some DBC information on the Wiki
</p>

<p>
	But earlier this year, I was looking to bring a few of my DBC related 'side' projects together as a single project.
</p>

<p>
	Namely:
</p>

<p>
	DBC to SQL convertor (<abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">Mangos</abbr></abbr> Extractor)
</p>

<p>
	DBC SQL importer Scripts
</p>

<p>
	DBC Data Remapper Tool - For wiring up which DBC files / fields belong to which version of WOW
</p>

<p>
	DBC Wiki entry creator
</p>

<p>
	DBC Docs Editor (Based on the DBDocs Editor) - Including Reading / Creating the .XML files which the <abbr title="Massive Network Game Object Server"><abbr title="Massive Network Game Object Server">Mangos</abbr></abbr> Extractor uses to map the fieldnames
</p>

<p>
	 
</p>

<p>
	 
</p>
]]></description><guid isPermaLink="false">2</guid><pubDate>Tue, 26 Jul 2016 09:20:11 +0000</pubDate></item></channel></rss>
