<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>the Amber Dragon</title>
	<atom:link href="http://nwn.theamberdragon.com/feed" rel="self" type="application/rss+xml" />
	<link>http://nwn.theamberdragon.com</link>
	<description>fluffyamoeba's NWN scripty stuff</description>
	<lastBuildDate>Sun, 31 Aug 2008 11:15:41 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>New for 1.69</title>
		<link>http://nwn.theamberdragon.com/archives/2008/06/new-for-169</link>
		<comments>http://nwn.theamberdragon.com/archives/2008/06/new-for-169#comments</comments>
		<pubDate>Mon, 09 Jun 2008 21:51:46 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[scripting]]></category>
		<category><![CDATA[meta]]></category>
		<category><![CDATA[nwscript]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/?p=20</guid>
		<description><![CDATA[Edit: the GeSHi file can be found here.
The site&#8217;s back from over a year of it just sitting here collecting spam. I&#8217;ll try to post a bit more often (every 6 months maybe   ). Like NWN1, it&#8217;s back and shiny and looks prettier than before. It also has proper nwscript highlighting thanks to [...]]]></description>
			<content:encoded><![CDATA[<p>Edit: the GeSHi file can be found <a href="http://nwn.theamberdragon.com/files/nwscript169_geshi.7z">here</a>.</p>
<p>The site&#8217;s back from over a year of it just sitting here collecting spam. I&#8217;ll try to post a bit more often (every 6 months maybe <img src='http://nwn.theamberdragon.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ). Like NWN1, it&#8217;s back and shiny and looks prettier than before. It also has proper nwscript highlighting thanks to Jasperre kindly giving me a copy of the <a href="http://nwscript.nwn2lexicon.com/" title="nwscript pastebin">nwscript pastebin</a>&#8217;s <a href="http://qbnz.com/highlighter/" title="Generic Syntax Highlighter">GeSHi</a> file.</p>
<p>So here&#8217;s the new functions from 1.69 as a test&#8230;<br />
<span id="more-20"></span></p>

<div class="wp_syntax"><div class="code"><pre class="nwscript" style="font-family:monospace;">// Get the description of oObject.
// - oObject: the object from which you are obtaining the description. 
//            Can be a creature, item, placeable, door, trigger or module object.
// - bOriginalDescription:  if set to true any new description specified via a SetDescription scripting command
//                   is ignored and the original object's description is returned instead.
// - bIdentified: If oObject is an item, setting this to TRUE will return the identified description,
//                setting this to FALSE will return the unidentified description. This flag has no
//                effect on objects other than items.
string GetDescription(object oObject, int bOriginalDescription=FALSE, int bIdentifiedDescription=TRUE);
&nbsp;
// Set the description of oObject.
// - oObject: the object for which you are changing the description 
//            Can be a creature, placeable, item, door, or trigger.
// - sNewDescription: the new description that the object will use.
// - bIdentified: If oObject is an item, setting this to TRUE will set the identified description,
//                setting this to FALSE will set the unidentified description. This flag has no
//                effect on objects other than items.
// Note: Setting an object's description to &quot;&quot; will make the object
//       revert to using the description it originally had before any
//       SetDescription() calls were made on the object.
void SetDescription(object oObject, string sNewDescription=&quot;&quot;, int bIdentifiedDescription=TRUE);
&nbsp;
// Get the PC that sent the last player chat(text) message.
// Should only be called from a module's OnPlayerChat event script.
// * Returns OBJECT_INVALID on error.
// Note: Private tells do not trigger a OnPlayerChat event.
object GetPCChatSpeaker();
&nbsp;
// Get the last player chat(text) message that was sent.
// Should only be called from a module's OnPlayerChat event script.
// * Returns empty string &quot;&quot; on error.
// Note: Private tells do not trigger a OnPlayerChat event.
string GetPCChatMessage();
&nbsp;
// Get the volume of the last player chat(text) message that was sent.
// Returns one of the following TALKVOLUME_* constants based on the volume setting
// that the player used to send the chat message.
//                TALKVOLUME_TALK
//                TALKVOLUME_WHISPER
//                TALKVOLUME_SHOUT
//                TALKVOLUME_SILENT_SHOUT (used for DM chat channel)
//                TALKVOLUME_PARTY
// Should only be called from a module's OnPlayerChat event script.
// * Returns -1 on error.
// Note: Private tells do not trigger a OnPlayerChat event.
int GetPCChatVolume();
&nbsp;
// Set the last player chat(text) message before it gets sent to other players.
// - sNewChatMessage: The new chat text to be sent onto other players.
//                    Setting the player chat message to an empty string &quot;&quot;,
//                    will cause the chat message to be discarded 
//                    (i.e. it will not be sent to other players).
// Note: The new chat message gets sent after the OnPlayerChat script exits.
void SetPCChatMessage(string sNewChatMessage=&quot;&quot;);
&nbsp;
// Set the last player chat(text) volume before it gets sent to other players.
// - nTalkVolume: The new volume of the chat text to be sent onto other players.
//                TALKVOLUME_TALK
//                TALKVOLUME_WHISPER
//                TALKVOLUME_SHOUT
//                TALKVOLUME_SILENT_SHOUT (used for DM chat channel)
//                TALKVOLUME_PARTY
//                TALKVOLUME_TELL (sends the chat message privately back to the original speaker)
// Note: The new chat message gets sent after the OnPlayerChat script exits.
void SetPCChatVolume(int nTalkVolume=TALKVOLUME_TALK);
&nbsp;
// Get the Color of oObject from the color channel specified.
// - oObject: the object from which you are obtaining the color. 
//            Can be a creature that has color information (i.e. the playable races).
// - nColorChannel: The color channel that you want to get the color value of.
//                   COLOR_CHANNEL_SKIN
//                   COLOR_CHANNEL_HAIR
//                   COLOR_CHANNEL_TATTOO_1
//                   COLOR_CHANNEL_TATTOO_2
// * Returns -1 on error.
int GetColor(object oObject, int nColorChannel);
&nbsp;
// Set the color channel of oObject to the color specified.
// - oObject: the object for which you are changing the color.
//            Can be a creature that has color information (i.e. the playable races).
// - nColorChannel: The color channel that you want to set the color value of.
//                   COLOR_CHANNEL_SKIN
//                   COLOR_CHANNEL_HAIR
//                   COLOR_CHANNEL_TATTOO_1
//                   COLOR_CHANNEL_TATTOO_2
// - nColorValue: The color you want to set (0-175).
void SetColor(object oObject, int nColorChannel, int nColorValue);
&nbsp;
// Returns Item property Material.  You need to specify the Material Type.
// - nMasterialType: The Material Type should be a positive integer between 0 and 77 (see iprp_matcost.2da).
// Note: The Material Type property will only affect the cost of the item if you modify the cost in the iprp_matcost.2da.
itemproperty ItemPropertyMaterial(int nMaterialType);
&nbsp;
// Returns Item property Quality. You need to specify the Quality.
// - nQuality:  The Quality of the item property to create (see iprp_qualcost.2da).
//              IP_CONST_QUALITY_*
// Note: The quality property will only affect the cost of the item if you modify the cost in the iprp_qualcost.2da.
itemproperty ItemPropertyQuality(int nQuality);
&nbsp;
// Returns a generic Additional Item property. You need to specify the Additional property.
// - nProperty: The item property to create (see iprp_addcost.2da).
//              IP_CONST_ADDITIONAL_*
// Note: The additional property only affects the cost of the item if you modify the cost in the iprp_addcost.2da.
itemproperty ItemPropertyAdditional(int nAdditionalProperty);</pre></div></div>

<p>Also, for comparison&#8230;</p>
<pre class="nwscript" style="font-family:monospace;">//::///////////////////////////////////////////////
//:: Confusion Heartbeat Support Script
//:: NW_G0_Confuse
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    This heartbeat script runs on any creature
    that has been hit with the confusion effect.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created On: Sept 27, 2001
//:://////////////////////////////////////////////
#include &quot;x0_inc_henai&quot;
&nbsp;
&nbsp;
void main()
{
    SendForHelp();
&nbsp;
    //Make sure the creature is commandable for the round
    SetCommandable(TRUE);
    //Clear all previous actions.
    ClearAllActions(TRUE);
    int nRandom = d10();
    //Roll a random int to determine this rounds effects
    if(nRandom  == 1)
    {
        ActionRandomWalk();
    }
    else if (nRandom &gt;= 2 &amp;&amp; nRandom  &lt;= 6)
    {
        ClearAllActions(TRUE);
    }
    else if(nRandom &gt;= 7 &amp;&amp; nRandom &lt;= 10)
    {
        ActionAttack(GetNearestObject(OBJECT_TYPE_CREATURE));
    }
    SetCommandable(FALSE);
}
&nbsp;</pre>
<p><strong>Download code: </strong><a href="http://nwn.theamberdragon.com/scripts/nw_g0_confuse.nss">nw_g0_confuse.nss</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2008/06/new-for-169/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PRC Server Pack Install</title>
		<link>http://nwn.theamberdragon.com/archives/2006/12/prc-server-pack-install</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/12/prc-server-pack-install#comments</comments>
		<pubDate>Sun, 17 Dec 2006 22:46:06 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[prc]]></category>
		<category><![CDATA[server admin]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/12/prc-server-pack-install</guid>
		<description><![CDATA[The server pack contains many useful utilities for running a server with the PRC. It is available as a Windows installer or a rar archive for manual installation. This covers manually installing the server pack and what to do with the components. While it is designed for a server running on Windows, the server pack [...]]]></description>
			<content:encoded><![CDATA[<p>The server pack contains many useful utilities for running a server with the PRC. It is available as a Windows installer or a rar archive for manual installation. This covers manually installing the server pack and what to do with the components. While it is designed for a server running on Windows, the server pack is still useful for Linux servers because it contains the precacher.</p>
<p>The current version of the server pack is 1.7.</p>
<p><span id="more-13"></span></p>
<h3>Why Do a Manual Install?</h3>
<ul>
<li>The Windows installer only works on a PC running Windows and that has NWN installed, so is no use for:
<ul>
<li>Other operating systems</li>
<li>PCs without NWN installed</li>
<li>The standalone server (it looks for registry entries the server doesn&#8217;t create)</li>
</ul>
</li>
<li>It includes utilities you either don&#8217;t need or use already</li>
<li>It makes its own registry entries</li>
</ul>
<h3>Installing the Server Pack &#8211; File List</h3>
<p>If you have a previous version of the server pack, uninstall that first. Download and unpack the rar file. It should contain the following:</p>
<ul>
<li>NWNX 2.6.1</li>
<li>NWNX-ODBC 0.9.2.4</li>
<li>NWNX-Letoscript build 23 beta 4</li>
<li>NWNX-Profiler 1.60</li>
<li>SQLite 3.3.6</li>
<li>Precacher (prc.jar, erf.exe, batch files to run it)</li>
<li>NWNX for Linux 2.5.3rc1 (source plus precompiled binary)</li>
<li>NWNX-InvFixpl 1.0</li>
<li>documentation</li>
</ul>
<h3>Installing the Server Pack &#8211; NWNx</h3>
<p>The server pack contains NWNx, various NWNx plugins and the NWNx documentation. Further information and the Linux binaries can be found on their site. To install NWNx, put the following files in your NWN directory: </p>
<ul>
<li>nwnx2.exe</li>
<li>nwnx.ini</li>
<li>madCHook.dll</li>
<li>nwnx-module.dll</li>
</ul>
<p>That&#8217;s it &#8211; installed. Look at nwnx.ini to configure it. The default .ini is usually fine, all you need to do is add the name of the module to load in the right place <strong>leaving out the .mod extension</strong> eg. <br />
<code>Module = "MyModule"</code></p>
<p>The most common NWNx plugins are included in the server pack. While they are optional, the NWNx based 2DA cache <em>requires</em> the ODBC (database) plugin to work. </p>
<h4>ODBC Plugin (nwnx_odbc.dll)</h4>
<p>This provides the database connectivity. The <a href="http://www.nwnx.org/index.php?id=doc_odbc2" title="nwnx odbc plugin docs">online documentation</a> for the plugin covers pretty much everything. There&#8217;s a copy of it in the server pack (nwnx_odbc2.html). The PRC scripts include the APS functions in inc_2dacache.nss and the initialisation function is already in the PRC&#8217;s module load event script. Therefore there&#8217;s no need to import the APS erf.</p>
<h4>LetoScript Plugin (LetoScript.dll, nwnx_leto.dll)</h4>
<p>The server pack comes with LetoScript version 3+24, which uses the Unicorn syntax. For the LetoScript functions to work, the server needs to be using servervault characters &#8211; strangely enough Letoscript can&#8217;t edit files on a remote computer. Also be aware that LetoScript works out the bic filename by using the first 16 characters of the PC&#8217;s first name + last name.</p>
<h4>Profiler Plugin (nwnx_profiler.dll)</h4>
<p>The plugin profiles running scripts, logging how often a script has been called and how much time it took to complete. The <a href="http://www.nwnx.org/index.php?id=doc_profiler" title="nwnx profiler plugin docs">online documentation</a> explains how it can be used. There&#8217;s also a copy of it in the server pack (nwnx_profiler.html). It&#8217;s not required for any PRC functions, but it&#8217;s very useful.</p>
<h4>Inventory Fix Plugin (nwnx_invfixpl.dll)</h4>
<p>Surprisingly enough, this plugin fixes inventory lag. However, it also alters the value of some items, so it may not be suitable for all persistent worlds. See the invfixpl_readme.txt in the server pack for more information.</p>
<h3>Installing the Server Pack &#8211; The Precacher</h3>
<h4>Why Bother?</h4>
<p>In a single player game, the PRC scripts read 2da data from the Bioware database (that&#8217;s what the PRC_DATA.xxx files are for). For multiplayer, especially a persistent world, the Bioware one isn&#8217;t really fast enough, so instead the PRC lets you store the 2da cache in the database used by NWNx. The precacher reads the PRC and some Bioware 2das into the database as doing this while playing causes the game to become unresponsive while it reads the 2das.</p>
<p>Note: using the NWNx database as the 2da cache is <em>required</em> for the Conversation Character Creator to work.</p>
<h4>Running the precacher on Windows</h4>
<p>First, install the PRC, then put the following files in the main NWN install directory:</p>
<ul>
<li>7za.exe</li>
<li>erf.exe</li>
<li>bioware2das.7z</li>
<li>prc.jar (the precacher)</li>
<li>Either precacher sqlite prc.bat or precacher mysql.bat, depending on which database you are using with NWNx</li>
<li>sqlite.exe if using sqlite</li>
</ul>
<p>Double click on the appropriate batch file (precacher sqlite prc.bat for sqlite, precacher mysql.bat for mySQL).</p>
<h4>Running the precacher on Linux</h4>
<p>First, in the directory where you extracted prc.jar, create a directory called precacher2das. Add the following files to the precacher2das directory:</p>
<ul>
<li>extract Bioware 2da files from bioware2das.7z</li>
<li>extract the 2da files from prc_2das.hak, prc_craft2das.hak and prc_race.hak, overwriting any duplicates</li>
</ul>
<p>Using the command line, go to the directory prc.jar is in and enter: <code>java -Xmx100m -jar prc.jar 2datosql precacher2das MySQL</code></p>
<p>Note: this method will also work for Windows if you don&#8217;t want to use the batch file.</p>
<h3>Installing the Server Pack &#8211; Making the 2DA Cache Database</h3>
<h4>Using sqlite</h4>
<p>After the precacher has finished, a file called sqlite.db will have been created. This is the database and it just needs moving to the NWN install directory on the server.</p>
<h4>Using mySQL</h4>
<p>This assumes mySQL is in the PATH for Windows. The precacher creates a file called out.sql, which needs moving to the server where the mySQL database is going to be created.</p>
<ol>
<li>open a command prompt</li>
<li>go to the directory you put out.sql in</li>
<li>type: <code>mysql -u user -p databasename < out.sql > out.log</code> (replace the user and databasename with whatever it should be)</li>
<li>enter the password when prompted</li>
</ol>
<p>For Linux, the command line is:<br />
<code>cat out.sql| mysql -u user -p databasename</code></p>
<p>There are several arguements that mysql takes, eg -u username and –user=username are equivalent, see the <a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html" title="MySQL 5.0 Reference Manual :: 8.6.1 mysql Options">MySQL manual</a>.</p>
<p>The log file will be empty, but it stops mySQL echoing a confirmation after every line of the sql file (it has a lot of lines) and it stops if it encounters an error.</p>
<p>Note: the Linux version of NWNx only has mySQL support, also there is no Linux version of sqlite.</p>
<h3>That&#8217;s It</h3>
<p>Suggestions please, particularly if something&#8217;s missing or incorrect.</p>
<h3>Credits</h3>
<p>The ODBC and profiler plugins are from <a href="http://www.nwnx.org/index.php?id=nwnx2" title="plugin download page">nwnx.org</a>, the LetoScript plugin from <a href="http://sourceforge.net/projects/leto/">Project Leto&#8217;s sourceforge site</a> and the inventory fix plugin from <a href="http://sourceforge.net/project/showfiles.php?group_id=174942&#038;package_id=204100">nwnrcc&#8217;s sourceforge site</a>. SQLite is avaliable from <a href="www.sqlite.org">www.sqlite.org</a>. The Precacher is based on a version made for the PRC by Yuritch, but rewritten into java by the PRC.</p>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/12/prc-server-pack-install/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL version of the PRC precacher data: part 2</title>
		<link>http://nwn.theamberdragon.com/archives/2006/10/mysql-version-of-the-prc-precacher-data-part-2</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/10/mysql-version-of-the-prc-precacher-data-part-2#comments</comments>
		<pubDate>Tue, 03 Oct 2006 15:08:39 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[prc]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[server admin]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/10/mysql-version-of-the-prc-precacher-data-part-2</guid>
		<description><![CDATA[Updated 5th August 2007
Now that the precacher generates the correct mySQL syntax, it&#8217;s a lot easier to create. It now only takes a few minutes, but here&#8217;s the one for NWN1.68 + PRC3.1d anyway:
outprc31e_mysql.rar
Importing it into mySQL
For Windows, assumes mySQL is in the PATH:

open a command prompt
go to the directory you unRARed the file
type: mysql [...]]]></description>
			<content:encoded><![CDATA[<p>Updated 5th August 2007</p>
<p>Now that the precacher generates the correct mySQL syntax, it&#8217;s a lot easier to create. It now only takes a few minutes, but here&#8217;s the one for NWN1.68 + PRC3.1d anyway:</p>
<p><a href="http://nwn.theamberdragon.com/scripts/outprc31e_mysql.rar">outprc31e_mysql.rar</a></p>
<h3>Importing it into mySQL</h3>
<p>For Windows, assumes mySQL is in the PATH:</p>
<ol>
<li>open a command prompt</li>
<li>go to the directory you unRARed the file</li>
<li>type: <code>mysql -u user -p databasename &lt; out.sql &gt; out.log</code> (er&#8230;replace the user and databasename with whatever it should be)</li>
<li>enter the password when prompted</li>
<li>go do something else for 5 minutes (the sql instructions are 50MB uncompressed)</li>
</ol>
<p>For Linux (with thanks to Tom), the command line is: <br />
cat out.sql| mysql -u user -p databasename </p>
<p>There are several arguements that mysql takes, eg -u username and &#8211;user=username are equivalent, see the <a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html" title="MySQL 5.0 Reference Manual :: 8.6.1 mysql Options">MySQL manual</a>.</p>
<p>The log file will be empty, but it stops mySQL echoing a confirmation after every line of the sql file (it has a lot of lines) and it stops if it encounters an error.</p>
<p>(and the sqlite one for the super lazy: <a href="http://nwn.theamberdragon.com/scripts/outprc31e_sqlite.rar">outprc31e_sqlite.rar</a>)</p>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/10/mysql-version-of-the-prc-precacher-data-part-2/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Controlling PRC Classes</title>
		<link>http://nwn.theamberdragon.com/archives/2006/07/controlling-prc-classes</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/07/controlling-prc-classes#comments</comments>
		<pubDate>Tue, 18 Jul 2006 22:55:38 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[prc]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/07/controlling-prc-classes</guid>
		<description><![CDATA[It is possible to ban players from levelling in a specific PRC class. Both base classes and prestige classes can be restricted. This is based on the Bioware Prestige Class control variables script.
This example uses the OA Samurai, but will work for any class. A variable is set on the PC in the OnClientEnter script [...]]]></description>
			<content:encoded><![CDATA[<p>It is possible to ban players from levelling in a specific PRC class. Both base classes and prestige classes can be restricted. This is based on the Bioware Prestige Class <a href="http://nwn.bioware.com/forums/viewcodepost.html?post=2386797" title="Bioware forums: HotU / 1.6x: New Scripting/Toolset Functionality explained">control variables script</a>.</p>
<p>This example uses the OA Samurai, but will work for any class. A variable is set on the PC in the OnClientEnter script to stop leveling in that class.</p>
<h3>Step 1: Go looking for the variable name</h3>
<p>The variable name can be found by looking through the PRC 2da files. Which you will have handily extracted <a href="http://nwn.theamberdragon.com/archives/2006/05/prc-precacher#more-7" title="MySQL version of the PRC precacher data">to run the precacher</a>. If not, open prc_2das.hak in nwnexplorer.</p>
<p>You need the 2da called cls_pres_xxx.2da, where xxx is an abbreviation of the class name. For OA samurai, it is cls_pres_samur.2da. Browse/open this file.</p>
<h3>Step 2: Find the variable name</h3>
<p>The 2da should look like:</p>
<pre>
2DA V2.0

  LABEL     ReqType ReqParam1        ReqParam2
0 ScriptVar VAR     PRC_AllowSamurai 0
</pre>
</p>
<p>This one is nice and simple &#8211; the only line there is what we want. Other classes have more entries in their cls_pres_xxx 2da. The one you want will have the label ScriptVar and be called something like PRC_Allow[...] in the ReqParam1 column. The variable name we use is <code>PRC_AllowSamurai</code>.</p>
<h3>Step 3: Add the code to onClientEnter</h3>
<p>
<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;">object oPC <span style="color: #339933;">=</span> GetEnteringObject<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// bans PCs from taking OA samurai levels</span>
SetLocalInt<span style="color: #009900;">&#40;</span>oPC<span style="color: #339933;">,</span> <span style="color: #ff0000;">&quot;PRC_AllowSamurai&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>It can also be used to make leveling in a certain class conditional on, for example, having completed a quest.</p>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/07/controlling-prc-classes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Serverstatus Script</title>
		<link>http://nwn.theamberdragon.com/archives/2006/05/serverstatus-script</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/05/serverstatus-script#comments</comments>
		<pubDate>Tue, 30 May 2006 01:00:45 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[scripting]]></category>
		<category><![CDATA[server admin]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/05/serverstatus-script</guid>
		<description><![CDATA[It displays some basic information about a multiplayer NWN server. Providing it is visible over the internet, then there are no extra requirements (ie no database or special router settings) needed. The script needs to know the address of the server, so its address needs to be fixed, either by using a fixed IP address [...]]]></description>
			<content:encoded><![CDATA[<p>It displays some basic information about a multiplayer NWN server. Providing it is visible over the internet, then there are no extra requirements (ie no database or special router settings) needed. The script needs to know the address of the server, so its address needs to be fixed, either by using a fixed IP address or a DNS service (we use <a href="http://www.dyndns.com/" title="dyndns">dyndns</a>). I decided to stick the script here after <a href="http://nwn.bioware.com/forums/viewtopic.html?topic=482887&#038;forum=56" title="NWN: Server Status display on Website?">this thread</a> on the BioBoards, which is why the code uses that server&#8217;s address.</p>
<p>Example output:</p>
<p>
Server Address: <strong>legacyofnetheril.servegame.org:5121</strong><br />
Server Status: <strong>Online</strong><br />
Players: <strong>3</strong> / <strong>24</strong>
</p>
<p><span id="more-10"></span></p>
<p>These variables may need altering:</p>
<ul>
<li>$serveraddr &#8211; should be the fixed IP address or the URL used to connect to the server</li>
<li>$server_down &#8211; the message that gets displayed if the script can&#8217;t find the server</li>
<li>$port &#8211; if the server is running on the default port 5121, then you do not need to do anything. If it is running on a different port you need to add a line below $serveraddr:<br />
        <code>$port="5122"</code> (replace it with the port number you use), then change the $status &#8230; line to read<br />
        <code>$status = nwserver_status($serveraddr, $port);</code></li>
</ul>
<h3>The PHP code</h3>
<pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># function: nwserver_status
</span><span style="color: #666666; font-style: italic;"># Returns the server status in an array
</span><span style="color: #666666; font-style: italic;"># If the server does not respond with the expected hex string,
</span><span style="color: #666666; font-style: italic;"># it returns an error message (which is not an array).
</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">function</span> nwserver_status<span style="color: #009900;">&#40;</span><span style="color: #000088;">$serveraddr</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;5121&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$timeout</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">5</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$connect</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fsockopen"><span style="color: #990000;">fsockopen</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;udp://&quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$serveraddr</span><span style="color: #339933;">,</span> <span style="color: #000088;">$port</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errno</span><span style="color: #339933;">,</span> <span style="color: #000088;">$errstr</span><span style="color: #339933;">,</span> <span style="color: #000088;">$timeout</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #000088;">$connect</span> <span style="color: #009900;">&#41;</span>    <span style="color: #009900;">&#123;</span>
	    <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;server down&quot;</span><span style="color: #339933;">;</span>
	    <span style="color: #b1b100;">return</span> <span style="color: #000088;">$error</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
	    <a href="http://www.php.net/socket_set_timeout"><span style="color: #990000;">socket_set_timeout</span></a><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$connect</span><span style="color: #339933;">,</span> <span style="color: #000088;">$timeout</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #000088;">$send</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\\xFE</span><span style="color: #660099; font-weight: bold;">\\xFD</span><span style="color: #660099; font-weight: bold;">\\x00</span><span style="color: #660099; font-weight: bold;">\\xE0</span><span style="color: #660099; font-weight: bold;">\\xEB</span><span style="color: #660099; font-weight: bold;">\\x2D</span><span style="color: #660099; font-weight: bold;">\\x0E</span><span style="color: #660099; font-weight: bold;">\\x14</span><span style="color: #660099; font-weight: bold;">\\x01</span><span style="color: #660099; font-weight: bold;">\\x0B</span><span style="color: #660099; font-weight: bold;">\\x01</span><span style="color: #660099; font-weight: bold;">\\x05</span><span style="color: #660099; font-weight: bold;">\\x08</span><span style="color: #660099; font-weight: bold;">\\x0A</span><span style="color: #660099; font-weight: bold;">\\x33</span><span style="color: #660099; font-weight: bold;">\\x34</span><span style="color: #660099; font-weight: bold;">\\x35</span><span style="color: #660099; font-weight: bold;">\\x13</span><span style="color: #660099; font-weight: bold;">\\x04</span><span style="color: #660099; font-weight: bold;">\\x36</span><span style="color: #660099; font-weight: bold;">\\x37</span><span style="color: #660099; font-weight: bold;">\\x38</span><span style="color: #660099; font-weight: bold;">\\x39</span><span style="color: #660099; font-weight: bold;">\\x14</span><span style="color: #660099; font-weight: bold;">\\x3A</span><span style="color: #660099; font-weight: bold;">\\x3B</span><span style="color: #660099; font-weight: bold;">\\x3C</span><span style="color: #660099; font-weight: bold;">\\x3D</span><span style="color: #660099; font-weight: bold;">\\x00</span><span style="color: #660099; font-weight: bold;">\\x00</span>&quot;</span><span style="color: #339933;">;</span>
	    <a href="http://www.php.net/fwrite"><span style="color: #990000;">fwrite</span></a><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$connect</span><span style="color: #339933;">,</span> <span style="color: #000088;">$send</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #000088;">$output</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/fread"><span style="color: #990000;">fread</span></a><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$connect</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">5000</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	    <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span> <span style="color: #339933;">!</span> <span style="color: #000088;">$output</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;no reply&quot;</span><span style="color: #339933;">;</span>
	    <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
            <span style="color: #000088;">$statusarray</span> <span style="color: #339933;">=</span> <a href="http://www.php.net/explode"><span style="color: #990000;">explode</span></a><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;<span style="color: #660099; font-weight: bold;">\\x00</span>&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$output</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><a href="http://www.php.net/count"><span style="color: #990000;">count</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$statusarray</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// if the array has &lt; 6 elements, we're referencing a non-existing element</span>
                <span style="color: #000088;">$error</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;bad reply&quot;</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
	    <span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
	<a href="http://www.php.net/fclose"><span style="color: #990000;">fclose</span></a><span style="color: #009900;">&#40;</span> <span style="color: #000088;">$connect</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$error</span> <span style="color: #339933;">==</span> <span style="color: #009900; font-weight: bold;">NULL</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$statusarray</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$error</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;"># php script to get the server status and player list
</span>
<span style="color: #666666; font-style: italic;">// gets server status directly from the gameserver</span>
&nbsp;
<span style="color: #000088;">$serveraddr</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;legacyofnetheril.servegame.org&quot;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// $server_down is displayed if the script can't connect </span>
<span style="color: #666666; font-style: italic;">// or if it receives no data from the server</span>
<span style="color: #000088;">$server_down</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&lt;p class=<span style="color: #000099; font-weight: bold;">\\&quot;</span>highlight<span style="color: #000099; font-weight: bold;">\\&quot;</span>&gt;The server is down - now what are you gonna do?&lt;/p&gt;<span style="color: #000099; font-weight: bold;">\\n</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
&nbsp;
<span style="color: #000088;">$status</span> <span style="color: #339933;">=</span> nwserver_status<span style="color: #009900;">&#40;</span><span style="color: #000088;">$serveraddr</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><a href="http://www.php.net/is_array"><span style="color: #990000;">is_array</span></a><span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// if an error message was returned</span>
	<span style="color: #b1b100;">print</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$status</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
    <span style="color: #666666; font-style: italic;">// format serverstatus array</span>
	<span style="color: #666666; font-style: italic;">// $status[11] is the port used, $status[5] the number of players online</span>
	<span style="color: #666666; font-style: italic;">// $status[6] the maximum number of players allowed</span>
    <span style="color: #b1b100;">print</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Server Address: &lt;strong&gt;<span style="color: #006699; font-weight: bold;">$serveraddr</span>:<span style="color: #006699; font-weight: bold;">$status[11]</span>&lt;/strong&gt;&lt;br /&gt;<span style="color: #000099; font-weight: bold;">\\n</span>&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">print</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Server Status: &lt;strong&gt;Online&lt;/strong&gt;&lt;br /&gt;<span style="color: #000099; font-weight: bold;">\\n</span>&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #b1b100;">print</span><span style="color: #009900;">&#40;</span> <span style="color: #0000ff;">&quot;Players: &lt;strong&gt;<span style="color: #006699; font-weight: bold;">$status[5]</span>&lt;/strong&gt; / &lt;strong&gt;<span style="color: #006699; font-weight: bold;">$status[6]</span>&lt;/strong&gt;&lt;br /&gt;<span style="color: #000099; font-weight: bold;">\\n</span>&quot;</span> <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000000; font-weight: bold;">?&gt;</span>
&nbsp;
&nbsp;
&nbsp;</pre>
<p><strong>Download code: </strong><a href="http://nwn.theamberdragon.com/scripts/nwserver_status.php.txt">nwserver_status.php.txt</a></p>
<p>Rename it to nwserver_status.php. <a href="http://nwn.theamberdragon.com/scripts/nwserver_status.php">The parsed PHP script to show it works.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/05/serverstatus-script/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>ECL for playable races</title>
		<link>http://nwn.theamberdragon.com/archives/2006/05/ecl-for-playable-races</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/05/ecl-for-playable-races#comments</comments>
		<pubDate>Fri, 12 May 2006 22:52:59 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[prc]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/05/ecl-for-playable-races</guid>
		<description><![CDATA[The list is made from the PRC&#8217;s ECL.2da with the blank playable races added in.


Race
LA
Racial HD
Monster Race
ECL


Aasimar
1
&#160;
&#160;
1


Air Genasi
1
&#160;
&#160;
1


Aquatic Elf
1
&#160;
&#160;
1


Arctic Dwarf
0
&#160;
&#160;
0


Avariel
3
&#160;
&#160;
3


Azer
4
2
outsider
6


Brownie
4
&#160;
&#160;
4


Bugbear
1
3
humanoid
4


Deep Halfling
0
&#160;
&#160;
0


Deep Imaskari
0
&#160;
&#160;
0


Drow Female
2
&#160;
&#160;
2


Drow Male
2
&#160;
&#160;
2


Duergar
1
&#160;
&#160;
1


Dwarf
0
&#160;
&#160;
0


Earth Genasi
1
&#160;
&#160;
1


Elf
0
&#160;
&#160;
0


Fey&#8217;ri
3
&#160;
&#160;
3


Fire Genasi
1
&#160;
&#160;
1


Forest Gnome
0
&#160;
&#160;
0


Ghostwise Halfling
1
&#160;
&#160;
1


Githyanki
2
&#160;
&#160;
2


Githzerai
2
&#160;
&#160;
2


Gnoll
1
2
humanoid
3


Gnome
0
&#160;
&#160;
0


Goblin
0
&#160;
&#160;
0


Gold Dwarf
0
&#160;
&#160;
0


Gray Orc
1
&#160;
&#160;
1


Half Drow
1
&#160;
&#160;
1


Half Elf
0
&#160;
&#160;
0


Half Ogre
1
&#160;
&#160;
1


Half Orc
0
&#160;
&#160;
0


Halfling
0
&#160;
&#160;
0


Hobgoblin
1
&#160;
&#160;
1


Human
0
&#160;
&#160;
0


Illithid
7
8
aberration
15


Kobold
0
&#160;
&#160;
0


Lizardfolk
1
2
humanoid
3


Minotaur
2
6
monstrous humanoid
8


Neraphim
0
&#160;
&#160;
0


Ogre
2
4
giant
6


Orc
0
&#160;
&#160;
0


Orog
2
&#160;
&#160;
2


Pixie
4
&#160;
&#160;
4


Rakshasa
7
7
outsider
14


Rock Gnome
0
&#160;
&#160;
0


Shadowswyft
1
&#160;
&#160;
1


Strongheart Halfling
0
&#160;
&#160;
0


Sun Elf
0
&#160;
&#160;
0


Svirfneblin
3
&#160;
&#160;
3


Tallfellow Halfling
0
&#160;
&#160;
0


Tanarukk
3
5
outsider
8


Tiefling
1
&#160;
&#160;
1


Troll
5
6
giant
11


Urdunnir
4
&#160;
&#160;
4


Water Genasi
1
&#160;
&#160;
1


Wemic
3
4
monstrous humanoid
7


Wild Dwarf
0
&#160;
&#160;
0


Wild Elf
0
&#160;
&#160;
0


Wood Elf
0
&#160;
&#160;
0


YuanTi Pureblood
2
4
monstrous humanoid
6


]]></description>
			<content:encoded><![CDATA[<p>The list is made from the PRC&#8217;s ECL.2da with the blank playable races added in.</p>
<table cellspacing="1">
<tr>
<th>Race</th>
<th>LA</th>
<th>Racial HD</th>
<th>Monster Race</th>
<th>ECL</th>
</tr>
<tr>
<td>Aasimar</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Air Genasi</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Aquatic Elf</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Arctic Dwarf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Avariel</td>
<td>3</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>3</td>
</tr>
<tr>
<td>Azer</td>
<td>4</td>
<td>2</td>
<td>outsider</td>
<td>6</td>
</tr>
<tr>
<td>Brownie</td>
<td>4</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>4</td>
</tr>
<tr>
<td>Bugbear</td>
<td>1</td>
<td>3</td>
<td>humanoid</td>
<td>4</td>
</tr>
<tr>
<td>Deep Halfling</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Deep Imaskari</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Drow Female</td>
<td>2</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>2</td>
</tr>
<tr>
<td>Drow Male</td>
<td>2</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>2</td>
</tr>
<tr>
<td>Duergar</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Dwarf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Earth Genasi</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Elf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Fey&#8217;ri</td>
<td>3</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>3</td>
</tr>
<tr>
<td>Fire Genasi</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Forest Gnome</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Ghostwise Halfling</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Githyanki</td>
<td>2</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>2</td>
</tr>
<tr>
<td>Githzerai</td>
<td>2</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>2</td>
</tr>
<tr>
<td>Gnoll</td>
<td>1</td>
<td>2</td>
<td>humanoid</td>
<td>3</td>
</tr>
<tr>
<td>Gnome</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Goblin</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Gold Dwarf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Gray Orc</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Half Drow</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Half Elf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Half Ogre</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Half Orc</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Halfling</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Hobgoblin</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Human</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Illithid</td>
<td>7</td>
<td>8</td>
<td>aberration</td>
<td>15</td>
</tr>
<tr>
<td>Kobold</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Lizardfolk</td>
<td>1</td>
<td>2</td>
<td>humanoid</td>
<td>3</td>
</tr>
<tr>
<td>Minotaur</td>
<td>2</td>
<td>6</td>
<td>monstrous humanoid</td>
<td>8</td>
</tr>
<tr>
<td>Neraphim</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Ogre</td>
<td>2</td>
<td>4</td>
<td>giant</td>
<td>6</td>
</tr>
<tr>
<td>Orc</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Orog</td>
<td>2</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>2</td>
</tr>
<tr>
<td>Pixie</td>
<td>4</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>4</td>
</tr>
<tr>
<td>Rakshasa</td>
<td>7</td>
<td>7</td>
<td>outsider</td>
<td>14</td>
</tr>
<tr>
<td>Rock Gnome</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Shadowswyft</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Strongheart Halfling</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Sun Elf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Svirfneblin</td>
<td>3</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>3</td>
</tr>
<tr>
<td>Tallfellow Halfling</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Tanarukk</td>
<td>3</td>
<td>5</td>
<td>outsider</td>
<td>8</td>
</tr>
<tr>
<td>Tiefling</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Troll</td>
<td>5</td>
<td>6</td>
<td>giant</td>
<td>11</td>
</tr>
<tr>
<td>Urdunnir</td>
<td>4</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>4</td>
</tr>
<tr>
<td>Water Genasi</td>
<td>1</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>1</td>
</tr>
<tr>
<td>Wemic</td>
<td>3</td>
<td>4</td>
<td>monstrous humanoid</td>
<td>7</td>
</tr>
<tr>
<td>Wild Dwarf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Wild Elf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>Wood Elf</td>
<td>0</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>0</td>
</tr>
<tr>
<td>YuanTi Pureblood</td>
<td>2</td>
<td>4</td>
<td>monstrous humanoid</td>
<td>6</td>
</tr>
</table>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/05/ecl-for-playable-races/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL version of the PRC precacher data</title>
		<link>http://nwn.theamberdragon.com/archives/2006/05/prc-precacher</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/05/prc-precacher#comments</comments>
		<pubDate>Thu, 11 May 2006 22:05:34 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[database]]></category>
		<category><![CDATA[prc]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/05/prc-precacher</guid>
		<description><![CDATA[Updated: Tue 3rd October 2006
After it choking on a few Bioware 2da files that were badly formed and having to start again each time, I got the out.sql file finally. I only needed to make minor changes to for it work with mySQL. I tested it by importing it into a mySQL database. I didn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Updated: Tue 3rd October 2006</p>
<p>After it choking on a few Bioware 2da files that were badly formed and having to start again each time, I got the out.sql file finally. I only needed to make minor changes to for it work with mySQL. I tested it by importing it into a mySQL database. I didn&#8217;t bother to do anything with the Bioware 2da files it didn&#8217;t like, most were empty anyway.</p>
<p><span id="more-7"></span></p>
<h3>Precacher steps:</h3>
<ol>
<li>extract Bioware 2da files</li>
<li>extract PRC 2da files from prc_2das.hak, prc_craft2das.hak and prc_race.hak</li>
<li>move the PRC files to the folder with the Bio ones and overwrite any duplicates with the PRC version</li>
<li>using the command line go to the directory the precacher is in</li>
<li>enter: <code>java -Xmx100m -jar prc.jar 2datosql precacher2das sqlite</code></li>
<li>wait&#8230;and wait&#8230;</li>
</ol>
<h3>Modifications to get it to work with mySQL</h3>
<ul>
<li>removed <code>BEGIN IMMEDIATE</code> (transaction start)</li>
<li>removed <code>PRAGMA [...]</code></li>
<li>escaped &#8216; in bioware 2das packspbar1.2da etc for bull&#8217;s strength, cat&#8217;s grace etc (this is probably needed for sqlite too&#8230;). Update: I just took those 2da files out &#8211; quicker than escaping all the apostrophes.</li>
<li>the field name int was changed to `int` as it is a keyword in <code>CREATE TABLE classes [...]</code></li>
<li>removed <code>COMMIT</code> (transaction end)</li>
</ul>
<h3>Importing it into mySQL</h3>
<p>For Windows, assumes mySQL is in the PATH:</p>
<ol>
<li>open a command prompt</li>
<li>go to the directory you unRARed the file</li>
<li>type: <code>mysql -u user -p databasename < out.sql > out.log</code> (er&#8230;replace the user and databasename with whatever it should be)</li>
<li>enter the password when prompted</li>
<li>go do something else for 5 minutes (the sql instructions are 50MB uncompressed)</li>
</ol>
<p>For Linux (with thanks to Tom), the command line is: <br />
cat out.sql| mysql -u user -p databasename </p>
<p>There are several arguements that mysql takes, eg -u username and &#8211;user=username are equivalent, see the <a href="http://dev.mysql.com/doc/refman/5.0/en/mysql-command-options.html" title="MySQL 5.0 Reference Manual :: 8.6.1 mysql Options">MySQL manual</a>.</p>
<p>The log file will be empty, but it stops mySQL echoing a confirmation after every line of the sql file (it has a lot of lines) and it stops if it encounters an error.</p>
<p>The <a href="http://nwn.theamberdragon.com/scripts/out.rar" title="out30f.rar">out30f.sql file compressed, version for PRC3.0f/NWN1.68 (RAR, 1.7MB)</a>.</p>
<p>These SQL statements will remove the cache tables without deleting the entire database, then the database can be updated with the new SQL file (this might also be useful for when the PRC update their 2da files).</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_appearance`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_classes`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_cls_feat`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_feat`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_ireq`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_item_to_ireq`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_portraits`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_racialtypes`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_soundset`</span>;
<span style="color: #993333; font-weight: bold;">DROP</span> <span style="color: #993333; font-weight: bold;">TABLE</span> <span style="color: #993333; font-weight: bold;">IF</span> <span style="color: #993333; font-weight: bold;">EXISTS</span> <span style="color: #ff0000;">`prc_cached2da_spells`</span>;</pre></div></div>

<p>I used the sqlite arguement for the precacher rather than the MySQL one because in the version of the PRC server pack I took the precacher from (1.4), the MySQL option produced more errors.</p>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/05/prc-precacher/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Syntax Highlighting?</title>
		<link>http://nwn.theamberdragon.com/archives/2006/05/syntax-highlighting</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/05/syntax-highlighting#comments</comments>
		<pubDate>Thu, 11 May 2006 20:10:31 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/05/syntax-highlighting</guid>
		<description><![CDATA[As NWscript is supposed to use C syntax, I&#8217;ll try that and see if it is nicer than PHP.
PHP
//::///////////////////////////////////////////////
//:: Confusion Heartbeat Support Script
//:: NW_G0_Confuse
//:: Copyright (c) 2001 Bioware Corp.
//:://////////////////////////////////////////////
/*
    This heartbeat script runs on any creature
    that has been hit with the confusion effect.
*/
//:://////////////////////////////////////////////
//:: Created By: Preston Watamaniuk
//:: Created [...]]]></description>
			<content:encoded><![CDATA[<p>As NWscript is supposed to use C syntax, I&#8217;ll try that and see if it is nicer than PHP.</p>
<h3>PHP</h3>
<pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//::///////////////////////////////////////////////</span>
<span style="color: #666666; font-style: italic;">//:: Confusion Heartbeat Support Script</span>
<span style="color: #666666; font-style: italic;">//:: NW_G0_Confuse</span>
<span style="color: #666666; font-style: italic;">//:: Copyright (c) 2001 Bioware Corp.</span>
<span style="color: #666666; font-style: italic;">//:://////////////////////////////////////////////</span>
<span style="color: #666666; font-style: italic;">/*
    This heartbeat script runs on any creature
    that has been hit with the confusion effect.
*/</span>
<span style="color: #666666; font-style: italic;">//:://////////////////////////////////////////////</span>
<span style="color: #666666; font-style: italic;">//:: Created By: Preston Watamaniuk</span>
<span style="color: #666666; font-style: italic;">//:: Created On: Sept 27, 2001</span>
<span style="color: #666666; font-style: italic;">//:://////////////////////////////////////////////</span>
<span style="color: #666666; font-style: italic;">#include &quot;x0_inc_henai&quot;
</span>
&nbsp;
void main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    SendForHelp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Make sure the creature is commandable for the round</span>
    SetCommandable<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//Clear all previous actions.</span>
    ClearAllActions<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    int nRandom <span style="color: #339933;">=</span> d10<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//Roll a random int to determine this rounds effects</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>nRandom  <span style="color: #339933;">==</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        ActionRandomWalk<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>nRandom <span style="color: #339933;">&gt;=</span> <span style="color: #cc66cc;">2</span> <span style="color: #339933;">&amp;&amp;</span> nRandom  <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">6</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        ClearAllActions<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>nRandom <span style="color: #339933;">&gt;=</span> <span style="color: #cc66cc;">7</span> <span style="color: #339933;">&amp;&amp;</span> nRandom <span style="color: #339933;">&lt;=</span> <span style="color: #cc66cc;">10</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        ActionAttack<span style="color: #009900;">&#40;</span>GetNearestObject<span style="color: #009900;">&#40;</span>OBJECT_TYPE_CREATURE<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    SetCommandable<span style="color: #009900;">&#40;</span><span style="color: #009900; font-weight: bold;">FALSE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;</pre>
<p><strong>Download code: </strong><a href="http://nwn.theamberdragon.com/scripts/nw_g0_confuse.nss">nw_g0_confuse.nss</a></p>
<h3>C</h3>
<pre class="c" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">//::///////////////////////////////////////////////</span>
<span style="color: #666666; font-style: italic;">//:: Confusion Heartbeat Support Script</span>
<span style="color: #666666; font-style: italic;">//:: NW_G0_Confuse</span>
<span style="color: #666666; font-style: italic;">//:: Copyright (c) 2001 Bioware Corp.</span>
<span style="color: #666666; font-style: italic;">//:://////////////////////////////////////////////</span>
<span style="color: #808080; font-style: italic;">/*
    This heartbeat script runs on any creature
    that has been hit with the confusion effect.
*/</span>
<span style="color: #666666; font-style: italic;">//:://////////////////////////////////////////////</span>
<span style="color: #666666; font-style: italic;">//:: Created By: Preston Watamaniuk</span>
<span style="color: #666666; font-style: italic;">//:: Created On: Sept 27, 2001</span>
<span style="color: #666666; font-style: italic;">//:://////////////////////////////////////////////</span>
<span style="color: #339933;">#include &quot;x0_inc_henai&quot;</span>
&nbsp;
&nbsp;
<span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    SendForHelp<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
    <span style="color: #666666; font-style: italic;">//Make sure the creature is commandable for the round</span>
    SetCommandable<span style="color: #009900;">&#40;</span>TRUE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//Clear all previous actions.</span>
    ClearAllActions<span style="color: #009900;">&#40;</span>TRUE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #993333;">int</span> nRandom <span style="color: #339933;">=</span> d10<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #666666; font-style: italic;">//Roll a random int to determine this rounds effects</span>
    <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>nRandom  <span style="color: #339933;">==</span> <span style="color: #0000dd;">1</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        ActionRandomWalk<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>nRandom <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">2</span> <span style="color: #339933;">&amp;&amp;</span> nRandom  <span style="color: #339933;">&lt;=</span> <span style="color: #0000dd;">6</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        ClearAllActions<span style="color: #009900;">&#40;</span>TRUE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    <span style="color: #b1b100;">else</span> <span style="color: #b1b100;">if</span><span style="color: #009900;">&#40;</span>nRandom <span style="color: #339933;">&gt;=</span> <span style="color: #0000dd;">7</span> <span style="color: #339933;">&amp;&amp;</span> nRandom <span style="color: #339933;">&lt;=</span> <span style="color: #0000dd;">10</span><span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
        ActionAttack<span style="color: #009900;">&#40;</span>GetNearestObject<span style="color: #009900;">&#40;</span>OBJECT_TYPE_CREATURE<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    <span style="color: #009900;">&#125;</span>
    SetCommandable<span style="color: #009900;">&#40;</span>FALSE<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;</pre>
<p><strong>Download code: </strong><a href="http://nwn.theamberdragon.com/scripts/nw_g0_confuse.nss">nw_g0_confuse.nss</a></p>
<p>Now those are some interesting colours.</p>
]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/05/syntax-highlighting/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world! (no comma for me)</title>
		<link>http://nwn.theamberdragon.com/archives/2006/05/hello-world-no-comma-for-me</link>
		<comments>http://nwn.theamberdragon.com/archives/2006/05/hello-world-no-comma-for-me#comments</comments>
		<pubDate>Thu, 11 May 2006 19:36:22 +0000</pubDate>
		<dc:creator>fluffyamoeba</dc:creator>
				<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://nwn.theamberdragon.com/archives/2006/05/hello-world-no-comma-for-me</guid>
		<description><![CDATA[It&#8217;s new and shiny and will eventually be filled with scripty stuff. And it&#8217;s not a blog. The blogging software is just there to fool you all into thinking I was going to talk about my cats.
Oh&#8230;almost forgot&#8230;

void main&#40;&#41;
&#123;
    SpeakString&#40;&#34;Hello world!&#34;&#41;;
&#125;

]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s new and shiny and will eventually be filled with scripty stuff. And it&#8217;s not a blog. The blogging software is just there to fool you all into thinking I was going to talk about my cats.</p>
<p>Oh&#8230;almost forgot&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="c" style="font-family:monospace;"><span style="color: #993333;">void</span> main<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
    SpeakString<span style="color: #009900;">&#40;</span><span style="color: #ff0000;">&quot;Hello world!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://nwn.theamberdragon.com/archives/2006/05/hello-world-no-comma-for-me/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
