<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.datoolset.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AND04</id>
		<title>Dragon Age Toolset Wiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://www.datoolset.net/mw/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=AND04"/>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/wiki/Special:Contributions/AND04"/>
		<updated>2026-04-26T11:50:11Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.25.6</generator>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=8031</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=8031"/>
				<updated>2009-11-20T21:04:02Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File - for instructions look [[2DA#Extending_the_game_via_M2DAs|here]]:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
        case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            if (IsPartyMember(oOwner)) // only show if the item went into the player's inventory&lt;br /&gt;
            {&lt;br /&gt;
                DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            }&lt;br /&gt;
            //Now we didn't handle the event itself but just displayed a floaty --&amp;gt; let the original event handler take over.&lt;br /&gt;
            HandleEvent(ev); // this passes the event to the default handler of the event's target object&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8029</id>
		<title>2DA</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8029"/>
				<updated>2009-11-20T20:26:33Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: /* Adding Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many of the properties of objects in the toolset make reference to 2DAs (two-dimensional arrays). These are read-only arrays containing various data used by scripting and the game engine. For example, the set of local variables that an object supports is defined in a 2DA.&lt;br /&gt;
&lt;br /&gt;
The source files for 2DAs are Microsoft Excel worksheets. This allows a wide variety of sophisticated techniques to be used to generate the values of the 2DA fields, such as macros and formulas. It also makes editing much easier since the columns can be annotated and formatted in helpful ways, and multiple related worksheets can be grouped into one file.&lt;br /&gt;
&lt;br /&gt;
Data in a 2DA is identified by a row number, with the first row (row zero) usually being reserved for internal use (undefined value, etc.) by convention. Each row has an arbitrary number of columns identified by strings. &lt;br /&gt;
&lt;br /&gt;
Before they can be used by the toolset or the game, 2DAs must be converted from Excel files into a more efficient form. Processed 2DAs are stored in files with the .[[GDA]] extension.&lt;br /&gt;
&lt;br /&gt;
== Excel file formatting ==&lt;br /&gt;
&lt;br /&gt;
Cell A1 will contain &amp;quot;ID&amp;quot;. This is checked by the processor and the worksheet will fail if this is not the case.&lt;br /&gt;
&lt;br /&gt;
Column A starting at line 3 will contain an integer row ID number that is unique to that row across all files (unless creating an M2DA override). Row IDs will be listed from smallest to highest within the same file and do not need to be consecutive.&lt;br /&gt;
&lt;br /&gt;
A blank row or column will determine the dimension of the spreadsheet in that direction. Everything past that point is ignored by the binarizer.&lt;br /&gt;
&lt;br /&gt;
Column names are case sensitive. This is because of the CRC32 algorithm used to generate the hash key. Changing the case of a column name after it is in use will break the game. White space before and after a column name will be removed before hashing.&lt;br /&gt;
&lt;br /&gt;
Row 2 will be a &amp;quot;types&amp;quot; row. Each is a single word: [[int]], [[string]] (single chars as well), [[resource]], [[float]] or [[bool]]. A special type &amp;quot;[[comment]]&amp;quot; can be used to exclude a column from export.&lt;br /&gt;
&lt;br /&gt;
Any column with string data that refers to files should have a type of &amp;quot;resource&amp;quot; and not &amp;quot;string&amp;quot;. This is because the &amp;quot;resource&amp;quot; type is used to determine dependencies for the 2DA file.&lt;br /&gt;
&lt;br /&gt;
'bool' type may be one of: a zero or non-zero number, Yes or No (case insensitive), or words beginning with T or F (such as True! and False!). NOTE: You cannot use TRUE and FALSE because Excel converts those to a special keyword the binarizer can't parse properly at this time. '''Note:''' the scripting language doesn't have a function for retrieving boolean values from a 2DA, and the behavior of Get2DAInt when retrieving a boolean is untested. It is probably safer to just use an integer for scripting purposes.&lt;br /&gt;
&lt;br /&gt;
If you wish to leave a cell unfilled, the string &amp;quot;****&amp;quot; (four asterisks) can be inserted instead of a value.&lt;br /&gt;
&lt;br /&gt;
Any worksheets that are not exportable 2DA data will have an underscore prepended to their name - the resource builder will subsequently ignore them.&lt;br /&gt;
&lt;br /&gt;
Worksheets need to have unique names among all excel files, duplicates will overwrite each other as each worksheet is exported as a file&lt;br /&gt;
&lt;br /&gt;
You cannot have the workbook open in Excel at the same time as running the binarizer on it.&lt;br /&gt;
&lt;br /&gt;
Strings have a maximum length of 768 characters. Anything longer will be truncated.&lt;br /&gt;
&lt;br /&gt;
== Extending the game via M2DAs ==&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;M2DA&amp;quot; is a &amp;quot;Multiple 2DA&amp;quot; that stacks a number of 2DA files into one larger table. They work much like single 2DA files except they can be patched or expanded later by adding more resources. These are useful for any table that lists other resources, such as appearance tables, so that new resources can be added later without having to modify a monolithic table.&lt;br /&gt;
&lt;br /&gt;
This is especially important for third-party modders, since BioWare might release an update to a core table at a later date that would overwrite any changes third parties had made to it. By using an M2DA with a unique name, and by using a range of ID numbers significantly separated from those already in use, you can ensure that your additions won't conflict with other portions of the M2DA.&lt;br /&gt;
&lt;br /&gt;
A list of all M2DAs used by the game can be found in [[2DA_base.xls]]. Every 2da listed in M2DA_base is treated as a M2DA, except for those with an ID between 10000 and 10999 which are handled as regular 2DAs. Each M2DA has a label that describes the subject covered by the M2DA and a worksheet prefix that all components of that M2DA must use.&lt;br /&gt;
&lt;br /&gt;
Every worksheet listed in M2DA_base is actually a prefix. The system reads this prefix and then searches through all the 2DAs for the ones starting with this prefix and merges them together as one 2DA. For example: M2DA Id 0 is &amp;quot;ANIM_&amp;quot;. The system looks through its list of 2das and finds &amp;quot;ANIM_base&amp;quot;, &amp;quot;ANIM_combat&amp;quot; and &amp;quot;ANIM_walk&amp;quot;. It will read and merge all 3 2DAs into an M2DA called &amp;quot;ANIM_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not all of the prefixes end in an underscore. For example, longsword variations are in worksheets prefixed with &amp;quot;longsword_variation&amp;quot;, so both &amp;quot;longsword_variation_candyland&amp;quot; and &amp;quot;longsword_variationcandyland&amp;quot; would work as M2DA worksheet names.&lt;br /&gt;
&lt;br /&gt;
2DAs are merged row by row, keyed on the ID column. If two rows in two different 2DAs to be merged have the same ID, the row in the2da with the highest priority wins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding 2DA export to the Windows XP file explorer ==&lt;br /&gt;
&lt;br /&gt;
Here's an easy way to add a context menu item that quickly converts new or updated Dragon Age Excel files into GDA format: &lt;br /&gt;
&lt;br /&gt;
Setup: &lt;br /&gt;
&lt;br /&gt;
# Open Windows Explorer and click Tools | Folder Options.&lt;br /&gt;
# In the File Types tab, select the XLS extension from the list and click the Advanced button.&lt;br /&gt;
# Click the New button and put 'Binarize 2DA' in the Action field.&lt;br /&gt;
# Paste the following in the Application field and click OK (update the drive and folder names to match your client): &amp;lt;tt&amp;gt;C:\DA\tag\main\ResourceBuild\Processors\ExcelProcessor.exe  &amp;quot;%l&amp;quot;  -outdir=C:\DA\tag\main\build\packages\core\override&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that paths with spaces in them can cause Windows trouble, if your paths have spaces in them remember to wrap them in quotation marks.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
# Using Windows Explorer, navigate to your 2DA folder (in my case C:\DA\tag\main\data\Source\2DA) and select the Excel file(s) to process. Right click and select 'Binarize 2DA' from the context menu. &lt;br /&gt;
# Confirm a corresponding GDA file is created in your override folder (in my case C:\DA\tag\main\build\packages\core\override) for each Excel file processed.&lt;br /&gt;
&lt;br /&gt;
== Step-by-Step ==&lt;br /&gt;
&lt;br /&gt;
If you have problems using the 2daExporter.xls spreadsheet to generate 2DAs the following method may work instead:&lt;br /&gt;
&lt;br /&gt;
*Create two folders called C:\2DA\ and C:\2DA\Override\&lt;br /&gt;
*Copy ExcelProcessor.exe to C:\2DA\&lt;br /&gt;
*Copy the Excel spreadsheets containing the 2DA you want to use in the game to C:\2DA\&lt;br /&gt;
*Create a batch file with the following line in it (change &amp;quot;placeables.xls&amp;quot; to whatever Excel file you're working with):&lt;br /&gt;
C:\2DA\ExcelProcessor.exe placeables.xls -outdir=C:\2DA\override\&lt;br /&gt;
*Run your batch file&lt;br /&gt;
*Find the GDA file from the C:\2DA\Override\ directory and copy it to the game's override directory. Remember to take into account the naming conventions of M2DAs; you may need to rename your 2DA files with a new suffix unique to your module to allow it to add to the core 2DAs without conflict.&lt;br /&gt;
&lt;br /&gt;
== 2DA XLS files used in Dragon Age ==&lt;br /&gt;
&lt;br /&gt;
''Note: This list is very incomplete right now''&lt;br /&gt;
&lt;br /&gt;
Bear in mind that 2DAs names are actually based on the names of the worksheets inside these Excel files, not the names of the files themselves. Some of these files contain a large number of individual 2DAs within them. They are bundled together into Excel files based on the nature of the 2DAs for convenience.&lt;br /&gt;
&lt;br /&gt;
=== Creatures ===&lt;br /&gt;
&lt;br /&gt;
*[[APR_base.xls]] - appearance types for creatures&lt;br /&gt;
*[[ABI_base.xls]] - integrates all talents and spells into the game&lt;br /&gt;
*[[ANIM_base.xls]]&lt;br /&gt;
*[[ANIM_combat.xls]]&lt;br /&gt;
*[[ANIM placeables.xls]]&lt;br /&gt;
*[[SyncAnimations.xls]]&lt;br /&gt;
*[[CLA_base.xls]] - Defines the character classes used throughout the game&lt;br /&gt;
*[[background.xls]] - defines the various origin stories available to each race and class.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
*[[placeables.xls]] - interactive object types&lt;br /&gt;
*[[BITM base.xls]] - item types&lt;br /&gt;
*[[ItemVariations.xls]] - item appearance variations (eg, all the different ways a longsword can look)&lt;br /&gt;
*[[PRJ_base.xls]] - how various projectiles look and behave&lt;br /&gt;
*[[VFX_base.xls]] - Visual effects&lt;br /&gt;
&lt;br /&gt;
=== Areas and plots ===&lt;br /&gt;
&lt;br /&gt;
*[[worldmaps.xls]] - world maps for open-ended travel between areas&lt;br /&gt;
*[[plottypes.xls]] - how plots are grouped at the highest level in the game GUI (codex entry types, story, etc.)&lt;br /&gt;
*[[areadata.xls]] - sets various properties for specific areas&lt;br /&gt;
*[[rewards.xls]] - rewards for plot completion&lt;br /&gt;
&lt;br /&gt;
== Adding Strings ==&lt;br /&gt;
&lt;br /&gt;
When adding strings to a 2DA, you have two options.  The simplest is to enter **** for the StringID column.  In that case, the name column will be used in the game.&lt;br /&gt;
&lt;br /&gt;
The other approach is to use the toolset's string editor to create a new string.  When that happens, you'll get a new StringID. Next enter that number into the StringID column in the 2DA.&lt;br /&gt;
&lt;br /&gt;
The second approach works better when translating your module, at the cost of portability.  If someone else wanted to reuse your 2DA, they'd have to generate their own strings, then update the StringID number based on these IDs.&lt;br /&gt;
&lt;br /&gt;
'''Attention:'''&lt;br /&gt;
&lt;br /&gt;
The current version of the &amp;quot;Exelprocessor&amp;quot;-App is buggy as it can't hanlde INT values above 8388607! Many thx to elys for figuring that out.&lt;br /&gt;
Also note that the current toolset core-talktable contains wrong ids as well - don't forget to delete it from the &amp;quot;packages\core\override\toolsetexport&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
'''Workaround:'''&lt;br /&gt;
&lt;br /&gt;
* Create and export your talktable, delete the core-talktable override.&lt;br /&gt;
* Create your M2DA File that you want to refer to your talk-table strings. Never Mind using the real IDs at this stage.&lt;br /&gt;
* Use the &amp;quot;Exelprocessor&amp;quot; to create the GDA file.&lt;br /&gt;
* Open the GDA-File with the toolset or elys's GDA-Editor App (http://social.bioware.com/project/755/)&lt;br /&gt;
[[File:Edit-GDA-Values.jpg]]&lt;br /&gt;
* Change the StringIDs to the StringIDs in your talktable.&lt;br /&gt;
&lt;br /&gt;
'''Remark:''' &lt;br /&gt;
&lt;br /&gt;
The previous Version stated: ''Take that StringID and add 16777216 to the number.'' this appears to be wrong.&lt;br /&gt;
&lt;br /&gt;
[[Category:2DAs]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8028</id>
		<title>2DA</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8028"/>
				<updated>2009-11-20T20:02:59Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: /* Adding Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many of the properties of objects in the toolset make reference to 2DAs (two-dimensional arrays). These are read-only arrays containing various data used by scripting and the game engine. For example, the set of local variables that an object supports is defined in a 2DA.&lt;br /&gt;
&lt;br /&gt;
The source files for 2DAs are Microsoft Excel worksheets. This allows a wide variety of sophisticated techniques to be used to generate the values of the 2DA fields, such as macros and formulas. It also makes editing much easier since the columns can be annotated and formatted in helpful ways, and multiple related worksheets can be grouped into one file.&lt;br /&gt;
&lt;br /&gt;
Data in a 2DA is identified by a row number, with the first row (row zero) usually being reserved for internal use (undefined value, etc.) by convention. Each row has an arbitrary number of columns identified by strings. &lt;br /&gt;
&lt;br /&gt;
Before they can be used by the toolset or the game, 2DAs must be converted from Excel files into a more efficient form. Processed 2DAs are stored in files with the .[[GDA]] extension.&lt;br /&gt;
&lt;br /&gt;
== Excel file formatting ==&lt;br /&gt;
&lt;br /&gt;
Cell A1 will contain &amp;quot;ID&amp;quot;. This is checked by the processor and the worksheet will fail if this is not the case.&lt;br /&gt;
&lt;br /&gt;
Column A starting at line 3 will contain an integer row ID number that is unique to that row across all files (unless creating an M2DA override). Row IDs will be listed from smallest to highest within the same file and do not need to be consecutive.&lt;br /&gt;
&lt;br /&gt;
A blank row or column will determine the dimension of the spreadsheet in that direction. Everything past that point is ignored by the binarizer.&lt;br /&gt;
&lt;br /&gt;
Column names are case sensitive. This is because of the CRC32 algorithm used to generate the hash key. Changing the case of a column name after it is in use will break the game. White space before and after a column name will be removed before hashing.&lt;br /&gt;
&lt;br /&gt;
Row 2 will be a &amp;quot;types&amp;quot; row. Each is a single word: [[int]], [[string]] (single chars as well), [[resource]], [[float]] or [[bool]]. A special type &amp;quot;[[comment]]&amp;quot; can be used to exclude a column from export.&lt;br /&gt;
&lt;br /&gt;
Any column with string data that refers to files should have a type of &amp;quot;resource&amp;quot; and not &amp;quot;string&amp;quot;. This is because the &amp;quot;resource&amp;quot; type is used to determine dependencies for the 2DA file.&lt;br /&gt;
&lt;br /&gt;
'bool' type may be one of: a zero or non-zero number, Yes or No (case insensitive), or words beginning with T or F (such as True! and False!). NOTE: You cannot use TRUE and FALSE because Excel converts those to a special keyword the binarizer can't parse properly at this time. '''Note:''' the scripting language doesn't have a function for retrieving boolean values from a 2DA, and the behavior of Get2DAInt when retrieving a boolean is untested. It is probably safer to just use an integer for scripting purposes.&lt;br /&gt;
&lt;br /&gt;
If you wish to leave a cell unfilled, the string &amp;quot;****&amp;quot; (four asterisks) can be inserted instead of a value.&lt;br /&gt;
&lt;br /&gt;
Any worksheets that are not exportable 2DA data will have an underscore prepended to their name - the resource builder will subsequently ignore them.&lt;br /&gt;
&lt;br /&gt;
Worksheets need to have unique names among all excel files, duplicates will overwrite each other as each worksheet is exported as a file&lt;br /&gt;
&lt;br /&gt;
You cannot have the workbook open in Excel at the same time as running the binarizer on it.&lt;br /&gt;
&lt;br /&gt;
Strings have a maximum length of 768 characters. Anything longer will be truncated.&lt;br /&gt;
&lt;br /&gt;
== Extending the game via M2DAs ==&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;M2DA&amp;quot; is a &amp;quot;Multiple 2DA&amp;quot; that stacks a number of 2DA files into one larger table. They work much like single 2DA files except they can be patched or expanded later by adding more resources. These are useful for any table that lists other resources, such as appearance tables, so that new resources can be added later without having to modify a monolithic table.&lt;br /&gt;
&lt;br /&gt;
This is especially important for third-party modders, since BioWare might release an update to a core table at a later date that would overwrite any changes third parties had made to it. By using an M2DA with a unique name, and by using a range of ID numbers significantly separated from those already in use, you can ensure that your additions won't conflict with other portions of the M2DA.&lt;br /&gt;
&lt;br /&gt;
A list of all M2DAs used by the game can be found in [[2DA_base.xls]]. Every 2da listed in M2DA_base is treated as a M2DA, except for those with an ID between 10000 and 10999 which are handled as regular 2DAs. Each M2DA has a label that describes the subject covered by the M2DA and a worksheet prefix that all components of that M2DA must use.&lt;br /&gt;
&lt;br /&gt;
Every worksheet listed in M2DA_base is actually a prefix. The system reads this prefix and then searches through all the 2DAs for the ones starting with this prefix and merges them together as one 2DA. For example: M2DA Id 0 is &amp;quot;ANIM_&amp;quot;. The system looks through its list of 2das and finds &amp;quot;ANIM_base&amp;quot;, &amp;quot;ANIM_combat&amp;quot; and &amp;quot;ANIM_walk&amp;quot;. It will read and merge all 3 2DAs into an M2DA called &amp;quot;ANIM_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not all of the prefixes end in an underscore. For example, longsword variations are in worksheets prefixed with &amp;quot;longsword_variation&amp;quot;, so both &amp;quot;longsword_variation_candyland&amp;quot; and &amp;quot;longsword_variationcandyland&amp;quot; would work as M2DA worksheet names.&lt;br /&gt;
&lt;br /&gt;
2DAs are merged row by row, keyed on the ID column. If two rows in two different 2DAs to be merged have the same ID, the row in the2da with the highest priority wins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding 2DA export to the Windows XP file explorer ==&lt;br /&gt;
&lt;br /&gt;
Here's an easy way to add a context menu item that quickly converts new or updated Dragon Age Excel files into GDA format: &lt;br /&gt;
&lt;br /&gt;
Setup: &lt;br /&gt;
&lt;br /&gt;
# Open Windows Explorer and click Tools | Folder Options.&lt;br /&gt;
# In the File Types tab, select the XLS extension from the list and click the Advanced button.&lt;br /&gt;
# Click the New button and put 'Binarize 2DA' in the Action field.&lt;br /&gt;
# Paste the following in the Application field and click OK (update the drive and folder names to match your client): &amp;lt;tt&amp;gt;C:\DA\tag\main\ResourceBuild\Processors\ExcelProcessor.exe  &amp;quot;%l&amp;quot;  -outdir=C:\DA\tag\main\build\packages\core\override&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that paths with spaces in them can cause Windows trouble, if your paths have spaces in them remember to wrap them in quotation marks.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
# Using Windows Explorer, navigate to your 2DA folder (in my case C:\DA\tag\main\data\Source\2DA) and select the Excel file(s) to process. Right click and select 'Binarize 2DA' from the context menu. &lt;br /&gt;
# Confirm a corresponding GDA file is created in your override folder (in my case C:\DA\tag\main\build\packages\core\override) for each Excel file processed.&lt;br /&gt;
&lt;br /&gt;
== Step-by-Step ==&lt;br /&gt;
&lt;br /&gt;
If you have problems using the 2daExporter.xls spreadsheet to generate 2DAs the following method may work instead:&lt;br /&gt;
&lt;br /&gt;
*Create two folders called C:\2DA\ and C:\2DA\Override\&lt;br /&gt;
*Copy ExcelProcessor.exe to C:\2DA\&lt;br /&gt;
*Copy the Excel spreadsheets containing the 2DA you want to use in the game to C:\2DA\&lt;br /&gt;
*Create a batch file with the following line in it (change &amp;quot;placeables.xls&amp;quot; to whatever Excel file you're working with):&lt;br /&gt;
C:\2DA\ExcelProcessor.exe placeables.xls -outdir=C:\2DA\override\&lt;br /&gt;
*Run your batch file&lt;br /&gt;
*Find the GDA file from the C:\2DA\Override\ directory and copy it to the game's override directory. Remember to take into account the naming conventions of M2DAs; you may need to rename your 2DA files with a new suffix unique to your module to allow it to add to the core 2DAs without conflict.&lt;br /&gt;
&lt;br /&gt;
== 2DA XLS files used in Dragon Age ==&lt;br /&gt;
&lt;br /&gt;
''Note: This list is very incomplete right now''&lt;br /&gt;
&lt;br /&gt;
Bear in mind that 2DAs names are actually based on the names of the worksheets inside these Excel files, not the names of the files themselves. Some of these files contain a large number of individual 2DAs within them. They are bundled together into Excel files based on the nature of the 2DAs for convenience.&lt;br /&gt;
&lt;br /&gt;
=== Creatures ===&lt;br /&gt;
&lt;br /&gt;
*[[APR_base.xls]] - appearance types for creatures&lt;br /&gt;
*[[ABI_base.xls]] - integrates all talents and spells into the game&lt;br /&gt;
*[[ANIM_base.xls]]&lt;br /&gt;
*[[ANIM_combat.xls]]&lt;br /&gt;
*[[ANIM placeables.xls]]&lt;br /&gt;
*[[SyncAnimations.xls]]&lt;br /&gt;
*[[CLA_base.xls]] - Defines the character classes used throughout the game&lt;br /&gt;
*[[background.xls]] - defines the various origin stories available to each race and class.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
*[[placeables.xls]] - interactive object types&lt;br /&gt;
*[[BITM base.xls]] - item types&lt;br /&gt;
*[[ItemVariations.xls]] - item appearance variations (eg, all the different ways a longsword can look)&lt;br /&gt;
*[[PRJ_base.xls]] - how various projectiles look and behave&lt;br /&gt;
*[[VFX_base.xls]] - Visual effects&lt;br /&gt;
&lt;br /&gt;
=== Areas and plots ===&lt;br /&gt;
&lt;br /&gt;
*[[worldmaps.xls]] - world maps for open-ended travel between areas&lt;br /&gt;
*[[plottypes.xls]] - how plots are grouped at the highest level in the game GUI (codex entry types, story, etc.)&lt;br /&gt;
*[[areadata.xls]] - sets various properties for specific areas&lt;br /&gt;
*[[rewards.xls]] - rewards for plot completion&lt;br /&gt;
&lt;br /&gt;
== Adding Strings ==&lt;br /&gt;
&lt;br /&gt;
When adding strings to a 2DA, you have two options.  The simplest is to enter **** for the StringID column.  In that case, the name column will be used in the game.&lt;br /&gt;
&lt;br /&gt;
The other approach is to use the toolset's string editor to create a new string.  When that happens, you'll get a new StringID. Next enter that number into the StringID column in the 2DA.&lt;br /&gt;
&lt;br /&gt;
The second approach works better when translating your module, at the cost of portability.  If someone else wanted to reuse your 2DA, they'd have to generate their own strings, then update the StringID number based on these IDs.&lt;br /&gt;
&lt;br /&gt;
'''Attention:'''&lt;br /&gt;
&lt;br /&gt;
The current version of the &amp;quot;Exelprocessor&amp;quot;-App is buggy as its can't hanlde INT values above 8388607! Many thx to Ely for figuring that out.&lt;br /&gt;
Also note that the current core-talktable contains wrong ids as well - don't forget to delete it from the &amp;quot;packages\core\override\toolsetexport&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
'''Workaround:'''&lt;br /&gt;
&lt;br /&gt;
* Create and export your talktable, delete the core-talktable override.&lt;br /&gt;
* Create your M2DA File that you want to refer to your talk-table strings. Never Mind using the real IDs at this stage.&lt;br /&gt;
* Use the &amp;quot;Exelprocessor&amp;quot; to create the GDA file.&lt;br /&gt;
* Open the GDA-File with the toolset or Ely's GDA-Editor App (http://social.bioware.com/project/755/)&lt;br /&gt;
[[File:Edit-GDA-Values.jpg]]&lt;br /&gt;
* Change the StringIDs to the StringIDs in your talktable.&lt;br /&gt;
&lt;br /&gt;
'''Remark:''' &lt;br /&gt;
&lt;br /&gt;
The previous Version stated: ''Take that StringID and add 16777216 to the number.'' this appears to be wrong.&lt;br /&gt;
&lt;br /&gt;
[[Category:2DAs]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8027</id>
		<title>2DA</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8027"/>
				<updated>2009-11-20T19:59:48Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: /* Adding Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many of the properties of objects in the toolset make reference to 2DAs (two-dimensional arrays). These are read-only arrays containing various data used by scripting and the game engine. For example, the set of local variables that an object supports is defined in a 2DA.&lt;br /&gt;
&lt;br /&gt;
The source files for 2DAs are Microsoft Excel worksheets. This allows a wide variety of sophisticated techniques to be used to generate the values of the 2DA fields, such as macros and formulas. It also makes editing much easier since the columns can be annotated and formatted in helpful ways, and multiple related worksheets can be grouped into one file.&lt;br /&gt;
&lt;br /&gt;
Data in a 2DA is identified by a row number, with the first row (row zero) usually being reserved for internal use (undefined value, etc.) by convention. Each row has an arbitrary number of columns identified by strings. &lt;br /&gt;
&lt;br /&gt;
Before they can be used by the toolset or the game, 2DAs must be converted from Excel files into a more efficient form. Processed 2DAs are stored in files with the .[[GDA]] extension.&lt;br /&gt;
&lt;br /&gt;
== Excel file formatting ==&lt;br /&gt;
&lt;br /&gt;
Cell A1 will contain &amp;quot;ID&amp;quot;. This is checked by the processor and the worksheet will fail if this is not the case.&lt;br /&gt;
&lt;br /&gt;
Column A starting at line 3 will contain an integer row ID number that is unique to that row across all files (unless creating an M2DA override). Row IDs will be listed from smallest to highest within the same file and do not need to be consecutive.&lt;br /&gt;
&lt;br /&gt;
A blank row or column will determine the dimension of the spreadsheet in that direction. Everything past that point is ignored by the binarizer.&lt;br /&gt;
&lt;br /&gt;
Column names are case sensitive. This is because of the CRC32 algorithm used to generate the hash key. Changing the case of a column name after it is in use will break the game. White space before and after a column name will be removed before hashing.&lt;br /&gt;
&lt;br /&gt;
Row 2 will be a &amp;quot;types&amp;quot; row. Each is a single word: [[int]], [[string]] (single chars as well), [[resource]], [[float]] or [[bool]]. A special type &amp;quot;[[comment]]&amp;quot; can be used to exclude a column from export.&lt;br /&gt;
&lt;br /&gt;
Any column with string data that refers to files should have a type of &amp;quot;resource&amp;quot; and not &amp;quot;string&amp;quot;. This is because the &amp;quot;resource&amp;quot; type is used to determine dependencies for the 2DA file.&lt;br /&gt;
&lt;br /&gt;
'bool' type may be one of: a zero or non-zero number, Yes or No (case insensitive), or words beginning with T or F (such as True! and False!). NOTE: You cannot use TRUE and FALSE because Excel converts those to a special keyword the binarizer can't parse properly at this time. '''Note:''' the scripting language doesn't have a function for retrieving boolean values from a 2DA, and the behavior of Get2DAInt when retrieving a boolean is untested. It is probably safer to just use an integer for scripting purposes.&lt;br /&gt;
&lt;br /&gt;
If you wish to leave a cell unfilled, the string &amp;quot;****&amp;quot; (four asterisks) can be inserted instead of a value.&lt;br /&gt;
&lt;br /&gt;
Any worksheets that are not exportable 2DA data will have an underscore prepended to their name - the resource builder will subsequently ignore them.&lt;br /&gt;
&lt;br /&gt;
Worksheets need to have unique names among all excel files, duplicates will overwrite each other as each worksheet is exported as a file&lt;br /&gt;
&lt;br /&gt;
You cannot have the workbook open in Excel at the same time as running the binarizer on it.&lt;br /&gt;
&lt;br /&gt;
Strings have a maximum length of 768 characters. Anything longer will be truncated.&lt;br /&gt;
&lt;br /&gt;
== Extending the game via M2DAs ==&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;M2DA&amp;quot; is a &amp;quot;Multiple 2DA&amp;quot; that stacks a number of 2DA files into one larger table. They work much like single 2DA files except they can be patched or expanded later by adding more resources. These are useful for any table that lists other resources, such as appearance tables, so that new resources can be added later without having to modify a monolithic table.&lt;br /&gt;
&lt;br /&gt;
This is especially important for third-party modders, since BioWare might release an update to a core table at a later date that would overwrite any changes third parties had made to it. By using an M2DA with a unique name, and by using a range of ID numbers significantly separated from those already in use, you can ensure that your additions won't conflict with other portions of the M2DA.&lt;br /&gt;
&lt;br /&gt;
A list of all M2DAs used by the game can be found in [[2DA_base.xls]]. Every 2da listed in M2DA_base is treated as a M2DA, except for those with an ID between 10000 and 10999 which are handled as regular 2DAs. Each M2DA has a label that describes the subject covered by the M2DA and a worksheet prefix that all components of that M2DA must use.&lt;br /&gt;
&lt;br /&gt;
Every worksheet listed in M2DA_base is actually a prefix. The system reads this prefix and then searches through all the 2DAs for the ones starting with this prefix and merges them together as one 2DA. For example: M2DA Id 0 is &amp;quot;ANIM_&amp;quot;. The system looks through its list of 2das and finds &amp;quot;ANIM_base&amp;quot;, &amp;quot;ANIM_combat&amp;quot; and &amp;quot;ANIM_walk&amp;quot;. It will read and merge all 3 2DAs into an M2DA called &amp;quot;ANIM_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not all of the prefixes end in an underscore. For example, longsword variations are in worksheets prefixed with &amp;quot;longsword_variation&amp;quot;, so both &amp;quot;longsword_variation_candyland&amp;quot; and &amp;quot;longsword_variationcandyland&amp;quot; would work as M2DA worksheet names.&lt;br /&gt;
&lt;br /&gt;
2DAs are merged row by row, keyed on the ID column. If two rows in two different 2DAs to be merged have the same ID, the row in the2da with the highest priority wins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding 2DA export to the Windows XP file explorer ==&lt;br /&gt;
&lt;br /&gt;
Here's an easy way to add a context menu item that quickly converts new or updated Dragon Age Excel files into GDA format: &lt;br /&gt;
&lt;br /&gt;
Setup: &lt;br /&gt;
&lt;br /&gt;
# Open Windows Explorer and click Tools | Folder Options.&lt;br /&gt;
# In the File Types tab, select the XLS extension from the list and click the Advanced button.&lt;br /&gt;
# Click the New button and put 'Binarize 2DA' in the Action field.&lt;br /&gt;
# Paste the following in the Application field and click OK (update the drive and folder names to match your client): &amp;lt;tt&amp;gt;C:\DA\tag\main\ResourceBuild\Processors\ExcelProcessor.exe  &amp;quot;%l&amp;quot;  -outdir=C:\DA\tag\main\build\packages\core\override&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that paths with spaces in them can cause Windows trouble, if your paths have spaces in them remember to wrap them in quotation marks.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
# Using Windows Explorer, navigate to your 2DA folder (in my case C:\DA\tag\main\data\Source\2DA) and select the Excel file(s) to process. Right click and select 'Binarize 2DA' from the context menu. &lt;br /&gt;
# Confirm a corresponding GDA file is created in your override folder (in my case C:\DA\tag\main\build\packages\core\override) for each Excel file processed.&lt;br /&gt;
&lt;br /&gt;
== Step-by-Step ==&lt;br /&gt;
&lt;br /&gt;
If you have problems using the 2daExporter.xls spreadsheet to generate 2DAs the following method may work instead:&lt;br /&gt;
&lt;br /&gt;
*Create two folders called C:\2DA\ and C:\2DA\Override\&lt;br /&gt;
*Copy ExcelProcessor.exe to C:\2DA\&lt;br /&gt;
*Copy the Excel spreadsheets containing the 2DA you want to use in the game to C:\2DA\&lt;br /&gt;
*Create a batch file with the following line in it (change &amp;quot;placeables.xls&amp;quot; to whatever Excel file you're working with):&lt;br /&gt;
C:\2DA\ExcelProcessor.exe placeables.xls -outdir=C:\2DA\override\&lt;br /&gt;
*Run your batch file&lt;br /&gt;
*Find the GDA file from the C:\2DA\Override\ directory and copy it to the game's override directory. Remember to take into account the naming conventions of M2DAs; you may need to rename your 2DA files with a new suffix unique to your module to allow it to add to the core 2DAs without conflict.&lt;br /&gt;
&lt;br /&gt;
== 2DA XLS files used in Dragon Age ==&lt;br /&gt;
&lt;br /&gt;
''Note: This list is very incomplete right now''&lt;br /&gt;
&lt;br /&gt;
Bear in mind that 2DAs names are actually based on the names of the worksheets inside these Excel files, not the names of the files themselves. Some of these files contain a large number of individual 2DAs within them. They are bundled together into Excel files based on the nature of the 2DAs for convenience.&lt;br /&gt;
&lt;br /&gt;
=== Creatures ===&lt;br /&gt;
&lt;br /&gt;
*[[APR_base.xls]] - appearance types for creatures&lt;br /&gt;
*[[ABI_base.xls]] - integrates all talents and spells into the game&lt;br /&gt;
*[[ANIM_base.xls]]&lt;br /&gt;
*[[ANIM_combat.xls]]&lt;br /&gt;
*[[ANIM placeables.xls]]&lt;br /&gt;
*[[SyncAnimations.xls]]&lt;br /&gt;
*[[CLA_base.xls]] - Defines the character classes used throughout the game&lt;br /&gt;
*[[background.xls]] - defines the various origin stories available to each race and class.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
*[[placeables.xls]] - interactive object types&lt;br /&gt;
*[[BITM base.xls]] - item types&lt;br /&gt;
*[[ItemVariations.xls]] - item appearance variations (eg, all the different ways a longsword can look)&lt;br /&gt;
*[[PRJ_base.xls]] - how various projectiles look and behave&lt;br /&gt;
*[[VFX_base.xls]] - Visual effects&lt;br /&gt;
&lt;br /&gt;
=== Areas and plots ===&lt;br /&gt;
&lt;br /&gt;
*[[worldmaps.xls]] - world maps for open-ended travel between areas&lt;br /&gt;
*[[plottypes.xls]] - how plots are grouped at the highest level in the game GUI (codex entry types, story, etc.)&lt;br /&gt;
*[[areadata.xls]] - sets various properties for specific areas&lt;br /&gt;
*[[rewards.xls]] - rewards for plot completion&lt;br /&gt;
&lt;br /&gt;
== Adding Strings ==&lt;br /&gt;
&lt;br /&gt;
When adding strings to a 2DA, you have two options.  The simplest is to enter **** for the StringID column.  In that case, the name column will be used in the game.&lt;br /&gt;
&lt;br /&gt;
The other approach is to use the toolset's string editor to create a new string.  When that happens, you'll get a new StringID. Next enter that number into the StringID column in the 2DA.&lt;br /&gt;
&lt;br /&gt;
The second approach works better when translating your module, at the cost of portability.  If someone else wanted to reuse your 2DA, they'd have to generate their own strings, then update the StringID number based on these IDs.&lt;br /&gt;
&lt;br /&gt;
'''Attention:'''&lt;br /&gt;
The current version of the &amp;quot;Exelprocessor&amp;quot;-App is buggy as its can't hanlde INT values above 8388607! Many thx to Ely for figuring that out.&lt;br /&gt;
Also note that the current core-talktable contains wrong ids as well - don't forget to delete it from the &amp;quot;packages\core\override\toolsetexport&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
'''Workaround:'''&lt;br /&gt;
* Create and export your talktable, delete the core-talktable override.&lt;br /&gt;
* Create your M2DA File that you want to refer to your talk-table strings. Never Mind using the real IDs at this stage.&lt;br /&gt;
* Use the &amp;quot;Exelprocessor&amp;quot; to create the GDA file.&lt;br /&gt;
* Open the GDA-File with the toolset or Ely's GDA-Editor App (http://social.bioware.com/project/755/)&lt;br /&gt;
[[File:Edit-GDA-Values.jpg]]&lt;br /&gt;
* Change the StringIDs to the StringIDs in your talktable.&lt;br /&gt;
&lt;br /&gt;
'''Remark:''' &lt;br /&gt;
The previous Version stated: ''Take that StringID and add 16777216 to the number.'' this appears to be wrong.&lt;br /&gt;
&lt;br /&gt;
[[Category:2DAs]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=File:Edit-GDA-Values.jpg&amp;diff=8026</id>
		<title>File:Edit-GDA-Values.jpg</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=File:Edit-GDA-Values.jpg&amp;diff=8026"/>
				<updated>2009-11-20T19:59:11Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8025</id>
		<title>2DA</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8025"/>
				<updated>2009-11-20T19:53:27Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: /* Adding Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many of the properties of objects in the toolset make reference to 2DAs (two-dimensional arrays). These are read-only arrays containing various data used by scripting and the game engine. For example, the set of local variables that an object supports is defined in a 2DA.&lt;br /&gt;
&lt;br /&gt;
The source files for 2DAs are Microsoft Excel worksheets. This allows a wide variety of sophisticated techniques to be used to generate the values of the 2DA fields, such as macros and formulas. It also makes editing much easier since the columns can be annotated and formatted in helpful ways, and multiple related worksheets can be grouped into one file.&lt;br /&gt;
&lt;br /&gt;
Data in a 2DA is identified by a row number, with the first row (row zero) usually being reserved for internal use (undefined value, etc.) by convention. Each row has an arbitrary number of columns identified by strings. &lt;br /&gt;
&lt;br /&gt;
Before they can be used by the toolset or the game, 2DAs must be converted from Excel files into a more efficient form. Processed 2DAs are stored in files with the .[[GDA]] extension.&lt;br /&gt;
&lt;br /&gt;
== Excel file formatting ==&lt;br /&gt;
&lt;br /&gt;
Cell A1 will contain &amp;quot;ID&amp;quot;. This is checked by the processor and the worksheet will fail if this is not the case.&lt;br /&gt;
&lt;br /&gt;
Column A starting at line 3 will contain an integer row ID number that is unique to that row across all files (unless creating an M2DA override). Row IDs will be listed from smallest to highest within the same file and do not need to be consecutive.&lt;br /&gt;
&lt;br /&gt;
A blank row or column will determine the dimension of the spreadsheet in that direction. Everything past that point is ignored by the binarizer.&lt;br /&gt;
&lt;br /&gt;
Column names are case sensitive. This is because of the CRC32 algorithm used to generate the hash key. Changing the case of a column name after it is in use will break the game. White space before and after a column name will be removed before hashing.&lt;br /&gt;
&lt;br /&gt;
Row 2 will be a &amp;quot;types&amp;quot; row. Each is a single word: [[int]], [[string]] (single chars as well), [[resource]], [[float]] or [[bool]]. A special type &amp;quot;[[comment]]&amp;quot; can be used to exclude a column from export.&lt;br /&gt;
&lt;br /&gt;
Any column with string data that refers to files should have a type of &amp;quot;resource&amp;quot; and not &amp;quot;string&amp;quot;. This is because the &amp;quot;resource&amp;quot; type is used to determine dependencies for the 2DA file.&lt;br /&gt;
&lt;br /&gt;
'bool' type may be one of: a zero or non-zero number, Yes or No (case insensitive), or words beginning with T or F (such as True! and False!). NOTE: You cannot use TRUE and FALSE because Excel converts those to a special keyword the binarizer can't parse properly at this time. '''Note:''' the scripting language doesn't have a function for retrieving boolean values from a 2DA, and the behavior of Get2DAInt when retrieving a boolean is untested. It is probably safer to just use an integer for scripting purposes.&lt;br /&gt;
&lt;br /&gt;
If you wish to leave a cell unfilled, the string &amp;quot;****&amp;quot; (four asterisks) can be inserted instead of a value.&lt;br /&gt;
&lt;br /&gt;
Any worksheets that are not exportable 2DA data will have an underscore prepended to their name - the resource builder will subsequently ignore them.&lt;br /&gt;
&lt;br /&gt;
Worksheets need to have unique names among all excel files, duplicates will overwrite each other as each worksheet is exported as a file&lt;br /&gt;
&lt;br /&gt;
You cannot have the workbook open in Excel at the same time as running the binarizer on it.&lt;br /&gt;
&lt;br /&gt;
Strings have a maximum length of 768 characters. Anything longer will be truncated.&lt;br /&gt;
&lt;br /&gt;
== Extending the game via M2DAs ==&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;M2DA&amp;quot; is a &amp;quot;Multiple 2DA&amp;quot; that stacks a number of 2DA files into one larger table. They work much like single 2DA files except they can be patched or expanded later by adding more resources. These are useful for any table that lists other resources, such as appearance tables, so that new resources can be added later without having to modify a monolithic table.&lt;br /&gt;
&lt;br /&gt;
This is especially important for third-party modders, since BioWare might release an update to a core table at a later date that would overwrite any changes third parties had made to it. By using an M2DA with a unique name, and by using a range of ID numbers significantly separated from those already in use, you can ensure that your additions won't conflict with other portions of the M2DA.&lt;br /&gt;
&lt;br /&gt;
A list of all M2DAs used by the game can be found in [[2DA_base.xls]]. Every 2da listed in M2DA_base is treated as a M2DA, except for those with an ID between 10000 and 10999 which are handled as regular 2DAs. Each M2DA has a label that describes the subject covered by the M2DA and a worksheet prefix that all components of that M2DA must use.&lt;br /&gt;
&lt;br /&gt;
Every worksheet listed in M2DA_base is actually a prefix. The system reads this prefix and then searches through all the 2DAs for the ones starting with this prefix and merges them together as one 2DA. For example: M2DA Id 0 is &amp;quot;ANIM_&amp;quot;. The system looks through its list of 2das and finds &amp;quot;ANIM_base&amp;quot;, &amp;quot;ANIM_combat&amp;quot; and &amp;quot;ANIM_walk&amp;quot;. It will read and merge all 3 2DAs into an M2DA called &amp;quot;ANIM_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not all of the prefixes end in an underscore. For example, longsword variations are in worksheets prefixed with &amp;quot;longsword_variation&amp;quot;, so both &amp;quot;longsword_variation_candyland&amp;quot; and &amp;quot;longsword_variationcandyland&amp;quot; would work as M2DA worksheet names.&lt;br /&gt;
&lt;br /&gt;
2DAs are merged row by row, keyed on the ID column. If two rows in two different 2DAs to be merged have the same ID, the row in the2da with the highest priority wins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding 2DA export to the Windows XP file explorer ==&lt;br /&gt;
&lt;br /&gt;
Here's an easy way to add a context menu item that quickly converts new or updated Dragon Age Excel files into GDA format: &lt;br /&gt;
&lt;br /&gt;
Setup: &lt;br /&gt;
&lt;br /&gt;
# Open Windows Explorer and click Tools | Folder Options.&lt;br /&gt;
# In the File Types tab, select the XLS extension from the list and click the Advanced button.&lt;br /&gt;
# Click the New button and put 'Binarize 2DA' in the Action field.&lt;br /&gt;
# Paste the following in the Application field and click OK (update the drive and folder names to match your client): &amp;lt;tt&amp;gt;C:\DA\tag\main\ResourceBuild\Processors\ExcelProcessor.exe  &amp;quot;%l&amp;quot;  -outdir=C:\DA\tag\main\build\packages\core\override&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that paths with spaces in them can cause Windows trouble, if your paths have spaces in them remember to wrap them in quotation marks.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
# Using Windows Explorer, navigate to your 2DA folder (in my case C:\DA\tag\main\data\Source\2DA) and select the Excel file(s) to process. Right click and select 'Binarize 2DA' from the context menu. &lt;br /&gt;
# Confirm a corresponding GDA file is created in your override folder (in my case C:\DA\tag\main\build\packages\core\override) for each Excel file processed.&lt;br /&gt;
&lt;br /&gt;
== Step-by-Step ==&lt;br /&gt;
&lt;br /&gt;
If you have problems using the 2daExporter.xls spreadsheet to generate 2DAs the following method may work instead:&lt;br /&gt;
&lt;br /&gt;
*Create two folders called C:\2DA\ and C:\2DA\Override\&lt;br /&gt;
*Copy ExcelProcessor.exe to C:\2DA\&lt;br /&gt;
*Copy the Excel spreadsheets containing the 2DA you want to use in the game to C:\2DA\&lt;br /&gt;
*Create a batch file with the following line in it (change &amp;quot;placeables.xls&amp;quot; to whatever Excel file you're working with):&lt;br /&gt;
C:\2DA\ExcelProcessor.exe placeables.xls -outdir=C:\2DA\override\&lt;br /&gt;
*Run your batch file&lt;br /&gt;
*Find the GDA file from the C:\2DA\Override\ directory and copy it to the game's override directory. Remember to take into account the naming conventions of M2DAs; you may need to rename your 2DA files with a new suffix unique to your module to allow it to add to the core 2DAs without conflict.&lt;br /&gt;
&lt;br /&gt;
== 2DA XLS files used in Dragon Age ==&lt;br /&gt;
&lt;br /&gt;
''Note: This list is very incomplete right now''&lt;br /&gt;
&lt;br /&gt;
Bear in mind that 2DAs names are actually based on the names of the worksheets inside these Excel files, not the names of the files themselves. Some of these files contain a large number of individual 2DAs within them. They are bundled together into Excel files based on the nature of the 2DAs for convenience.&lt;br /&gt;
&lt;br /&gt;
=== Creatures ===&lt;br /&gt;
&lt;br /&gt;
*[[APR_base.xls]] - appearance types for creatures&lt;br /&gt;
*[[ABI_base.xls]] - integrates all talents and spells into the game&lt;br /&gt;
*[[ANIM_base.xls]]&lt;br /&gt;
*[[ANIM_combat.xls]]&lt;br /&gt;
*[[ANIM placeables.xls]]&lt;br /&gt;
*[[SyncAnimations.xls]]&lt;br /&gt;
*[[CLA_base.xls]] - Defines the character classes used throughout the game&lt;br /&gt;
*[[background.xls]] - defines the various origin stories available to each race and class.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
*[[placeables.xls]] - interactive object types&lt;br /&gt;
*[[BITM base.xls]] - item types&lt;br /&gt;
*[[ItemVariations.xls]] - item appearance variations (eg, all the different ways a longsword can look)&lt;br /&gt;
*[[PRJ_base.xls]] - how various projectiles look and behave&lt;br /&gt;
*[[VFX_base.xls]] - Visual effects&lt;br /&gt;
&lt;br /&gt;
=== Areas and plots ===&lt;br /&gt;
&lt;br /&gt;
*[[worldmaps.xls]] - world maps for open-ended travel between areas&lt;br /&gt;
*[[plottypes.xls]] - how plots are grouped at the highest level in the game GUI (codex entry types, story, etc.)&lt;br /&gt;
*[[areadata.xls]] - sets various properties for specific areas&lt;br /&gt;
*[[rewards.xls]] - rewards for plot completion&lt;br /&gt;
&lt;br /&gt;
== Adding Strings ==&lt;br /&gt;
&lt;br /&gt;
When adding strings to a 2DA, you have two options.  The simplest is to enter **** for the StringID column.  In that case, the name column will be used in the game.&lt;br /&gt;
&lt;br /&gt;
The other approach is to use the toolset's string editor to create a new string.  When that happens, you'll get a new StringID. Next enter that number into the StringID column in the 2DA.&lt;br /&gt;
&lt;br /&gt;
The second approach works better when translating your module, at the cost of portability.  If someone else wanted to reuse your 2DA, they'd have to generate their own strings, then update the StringID number based on these IDs.&lt;br /&gt;
&lt;br /&gt;
'''Attention:'''&lt;br /&gt;
The current version of the &amp;quot;Exelprocessor&amp;quot;-App is buggy as its can't hanlde INT values above 8388607! Many thx to Ely for figuring that out.&lt;br /&gt;
Also note that the current core-talktable contains wrong ids as well - don't forget to delete it from the &amp;quot;packages\core\override\toolsetexport&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
'''Workaround:'''&lt;br /&gt;
* Create and export your talktable, delete the core-talktable override.&lt;br /&gt;
* Create your M2DA File that you want to refer to your talk-table strings. Never Mind using the real IDs at this stage.&lt;br /&gt;
* Use the &amp;quot;Exelprocessor&amp;quot; to create the GDA file.&lt;br /&gt;
* Open the GDA-File with the toolset or Ely's GDA-Editor App (http://social.bioware.com/project/755/)&lt;br /&gt;
* Change the StringIDs to the StringIDs in your talktable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remark:''' &lt;br /&gt;
The previous Version stated: ''Take that StringID and add 16777216 to the number.'' this appears to be wrong.&lt;br /&gt;
&lt;br /&gt;
[[Category:2DAs]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8024</id>
		<title>2DA</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=2DA&amp;diff=8024"/>
				<updated>2009-11-20T19:52:18Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: /* Adding Strings */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Many of the properties of objects in the toolset make reference to 2DAs (two-dimensional arrays). These are read-only arrays containing various data used by scripting and the game engine. For example, the set of local variables that an object supports is defined in a 2DA.&lt;br /&gt;
&lt;br /&gt;
The source files for 2DAs are Microsoft Excel worksheets. This allows a wide variety of sophisticated techniques to be used to generate the values of the 2DA fields, such as macros and formulas. It also makes editing much easier since the columns can be annotated and formatted in helpful ways, and multiple related worksheets can be grouped into one file.&lt;br /&gt;
&lt;br /&gt;
Data in a 2DA is identified by a row number, with the first row (row zero) usually being reserved for internal use (undefined value, etc.) by convention. Each row has an arbitrary number of columns identified by strings. &lt;br /&gt;
&lt;br /&gt;
Before they can be used by the toolset or the game, 2DAs must be converted from Excel files into a more efficient form. Processed 2DAs are stored in files with the .[[GDA]] extension.&lt;br /&gt;
&lt;br /&gt;
== Excel file formatting ==&lt;br /&gt;
&lt;br /&gt;
Cell A1 will contain &amp;quot;ID&amp;quot;. This is checked by the processor and the worksheet will fail if this is not the case.&lt;br /&gt;
&lt;br /&gt;
Column A starting at line 3 will contain an integer row ID number that is unique to that row across all files (unless creating an M2DA override). Row IDs will be listed from smallest to highest within the same file and do not need to be consecutive.&lt;br /&gt;
&lt;br /&gt;
A blank row or column will determine the dimension of the spreadsheet in that direction. Everything past that point is ignored by the binarizer.&lt;br /&gt;
&lt;br /&gt;
Column names are case sensitive. This is because of the CRC32 algorithm used to generate the hash key. Changing the case of a column name after it is in use will break the game. White space before and after a column name will be removed before hashing.&lt;br /&gt;
&lt;br /&gt;
Row 2 will be a &amp;quot;types&amp;quot; row. Each is a single word: [[int]], [[string]] (single chars as well), [[resource]], [[float]] or [[bool]]. A special type &amp;quot;[[comment]]&amp;quot; can be used to exclude a column from export.&lt;br /&gt;
&lt;br /&gt;
Any column with string data that refers to files should have a type of &amp;quot;resource&amp;quot; and not &amp;quot;string&amp;quot;. This is because the &amp;quot;resource&amp;quot; type is used to determine dependencies for the 2DA file.&lt;br /&gt;
&lt;br /&gt;
'bool' type may be one of: a zero or non-zero number, Yes or No (case insensitive), or words beginning with T or F (such as True! and False!). NOTE: You cannot use TRUE and FALSE because Excel converts those to a special keyword the binarizer can't parse properly at this time. '''Note:''' the scripting language doesn't have a function for retrieving boolean values from a 2DA, and the behavior of Get2DAInt when retrieving a boolean is untested. It is probably safer to just use an integer for scripting purposes.&lt;br /&gt;
&lt;br /&gt;
If you wish to leave a cell unfilled, the string &amp;quot;****&amp;quot; (four asterisks) can be inserted instead of a value.&lt;br /&gt;
&lt;br /&gt;
Any worksheets that are not exportable 2DA data will have an underscore prepended to their name - the resource builder will subsequently ignore them.&lt;br /&gt;
&lt;br /&gt;
Worksheets need to have unique names among all excel files, duplicates will overwrite each other as each worksheet is exported as a file&lt;br /&gt;
&lt;br /&gt;
You cannot have the workbook open in Excel at the same time as running the binarizer on it.&lt;br /&gt;
&lt;br /&gt;
Strings have a maximum length of 768 characters. Anything longer will be truncated.&lt;br /&gt;
&lt;br /&gt;
== Extending the game via M2DAs ==&lt;br /&gt;
&lt;br /&gt;
An &amp;quot;M2DA&amp;quot; is a &amp;quot;Multiple 2DA&amp;quot; that stacks a number of 2DA files into one larger table. They work much like single 2DA files except they can be patched or expanded later by adding more resources. These are useful for any table that lists other resources, such as appearance tables, so that new resources can be added later without having to modify a monolithic table.&lt;br /&gt;
&lt;br /&gt;
This is especially important for third-party modders, since BioWare might release an update to a core table at a later date that would overwrite any changes third parties had made to it. By using an M2DA with a unique name, and by using a range of ID numbers significantly separated from those already in use, you can ensure that your additions won't conflict with other portions of the M2DA.&lt;br /&gt;
&lt;br /&gt;
A list of all M2DAs used by the game can be found in [[2DA_base.xls]]. Every 2da listed in M2DA_base is treated as a M2DA, except for those with an ID between 10000 and 10999 which are handled as regular 2DAs. Each M2DA has a label that describes the subject covered by the M2DA and a worksheet prefix that all components of that M2DA must use.&lt;br /&gt;
&lt;br /&gt;
Every worksheet listed in M2DA_base is actually a prefix. The system reads this prefix and then searches through all the 2DAs for the ones starting with this prefix and merges them together as one 2DA. For example: M2DA Id 0 is &amp;quot;ANIM_&amp;quot;. The system looks through its list of 2das and finds &amp;quot;ANIM_base&amp;quot;, &amp;quot;ANIM_combat&amp;quot; and &amp;quot;ANIM_walk&amp;quot;. It will read and merge all 3 2DAs into an M2DA called &amp;quot;ANIM_&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Not all of the prefixes end in an underscore. For example, longsword variations are in worksheets prefixed with &amp;quot;longsword_variation&amp;quot;, so both &amp;quot;longsword_variation_candyland&amp;quot; and &amp;quot;longsword_variationcandyland&amp;quot; would work as M2DA worksheet names.&lt;br /&gt;
&lt;br /&gt;
2DAs are merged row by row, keyed on the ID column. If two rows in two different 2DAs to be merged have the same ID, the row in the2da with the highest priority wins.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Adding 2DA export to the Windows XP file explorer ==&lt;br /&gt;
&lt;br /&gt;
Here's an easy way to add a context menu item that quickly converts new or updated Dragon Age Excel files into GDA format: &lt;br /&gt;
&lt;br /&gt;
Setup: &lt;br /&gt;
&lt;br /&gt;
# Open Windows Explorer and click Tools | Folder Options.&lt;br /&gt;
# In the File Types tab, select the XLS extension from the list and click the Advanced button.&lt;br /&gt;
# Click the New button and put 'Binarize 2DA' in the Action field.&lt;br /&gt;
# Paste the following in the Application field and click OK (update the drive and folder names to match your client): &amp;lt;tt&amp;gt;C:\DA\tag\main\ResourceBuild\Processors\ExcelProcessor.exe  &amp;quot;%l&amp;quot;  -outdir=C:\DA\tag\main\build\packages\core\override&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that paths with spaces in them can cause Windows trouble, if your paths have spaces in them remember to wrap them in quotation marks.&lt;br /&gt;
&lt;br /&gt;
Usage:&lt;br /&gt;
&lt;br /&gt;
# Using Windows Explorer, navigate to your 2DA folder (in my case C:\DA\tag\main\data\Source\2DA) and select the Excel file(s) to process. Right click and select 'Binarize 2DA' from the context menu. &lt;br /&gt;
# Confirm a corresponding GDA file is created in your override folder (in my case C:\DA\tag\main\build\packages\core\override) for each Excel file processed.&lt;br /&gt;
&lt;br /&gt;
== Step-by-Step ==&lt;br /&gt;
&lt;br /&gt;
If you have problems using the 2daExporter.xls spreadsheet to generate 2DAs the following method may work instead:&lt;br /&gt;
&lt;br /&gt;
*Create two folders called C:\2DA\ and C:\2DA\Override\&lt;br /&gt;
*Copy ExcelProcessor.exe to C:\2DA\&lt;br /&gt;
*Copy the Excel spreadsheets containing the 2DA you want to use in the game to C:\2DA\&lt;br /&gt;
*Create a batch file with the following line in it (change &amp;quot;placeables.xls&amp;quot; to whatever Excel file you're working with):&lt;br /&gt;
C:\2DA\ExcelProcessor.exe placeables.xls -outdir=C:\2DA\override\&lt;br /&gt;
*Run your batch file&lt;br /&gt;
*Find the GDA file from the C:\2DA\Override\ directory and copy it to the game's override directory. Remember to take into account the naming conventions of M2DAs; you may need to rename your 2DA files with a new suffix unique to your module to allow it to add to the core 2DAs without conflict.&lt;br /&gt;
&lt;br /&gt;
== 2DA XLS files used in Dragon Age ==&lt;br /&gt;
&lt;br /&gt;
''Note: This list is very incomplete right now''&lt;br /&gt;
&lt;br /&gt;
Bear in mind that 2DAs names are actually based on the names of the worksheets inside these Excel files, not the names of the files themselves. Some of these files contain a large number of individual 2DAs within them. They are bundled together into Excel files based on the nature of the 2DAs for convenience.&lt;br /&gt;
&lt;br /&gt;
=== Creatures ===&lt;br /&gt;
&lt;br /&gt;
*[[APR_base.xls]] - appearance types for creatures&lt;br /&gt;
*[[ABI_base.xls]] - integrates all talents and spells into the game&lt;br /&gt;
*[[ANIM_base.xls]]&lt;br /&gt;
*[[ANIM_combat.xls]]&lt;br /&gt;
*[[ANIM placeables.xls]]&lt;br /&gt;
*[[SyncAnimations.xls]]&lt;br /&gt;
*[[CLA_base.xls]] - Defines the character classes used throughout the game&lt;br /&gt;
*[[background.xls]] - defines the various origin stories available to each race and class.&lt;br /&gt;
&lt;br /&gt;
=== Objects ===&lt;br /&gt;
*[[placeables.xls]] - interactive object types&lt;br /&gt;
*[[BITM base.xls]] - item types&lt;br /&gt;
*[[ItemVariations.xls]] - item appearance variations (eg, all the different ways a longsword can look)&lt;br /&gt;
*[[PRJ_base.xls]] - how various projectiles look and behave&lt;br /&gt;
*[[VFX_base.xls]] - Visual effects&lt;br /&gt;
&lt;br /&gt;
=== Areas and plots ===&lt;br /&gt;
&lt;br /&gt;
*[[worldmaps.xls]] - world maps for open-ended travel between areas&lt;br /&gt;
*[[plottypes.xls]] - how plots are grouped at the highest level in the game GUI (codex entry types, story, etc.)&lt;br /&gt;
*[[areadata.xls]] - sets various properties for specific areas&lt;br /&gt;
*[[rewards.xls]] - rewards for plot completion&lt;br /&gt;
&lt;br /&gt;
== Adding Strings ==&lt;br /&gt;
&lt;br /&gt;
When adding strings to a 2DA, you have two options.  The simplest is to enter **** for the StringID column.  In that case, the name column will be used in the game.&lt;br /&gt;
&lt;br /&gt;
The other approach is to use the toolset's string editor to create a new string.  When that happens, you'll get a new StringID. Next enter that number into the StringID column in the 2DA.&lt;br /&gt;
&lt;br /&gt;
The second approach works better when translating your module, at the cost of portability.  If someone else wanted to reuse your 2DA, they'd have to generate their own strings, then update the StringID number based on these IDs.&lt;br /&gt;
&lt;br /&gt;
'''Attention:'''&lt;br /&gt;
The current version of the &amp;quot;Exelprocessor&amp;quot;-App is buggy as its can't hanlde INT values above 8388607! Many thx to Ely for figuring that out.&lt;br /&gt;
Also note that the current core-talktable contains wrong ids as well - don't forget to delete it from the &amp;quot;packages\core\override\toolsetexport&amp;quot; directory.&lt;br /&gt;
&lt;br /&gt;
'''Workaround:'''&lt;br /&gt;
* Create and export your talktable, delete the core-talktable override.&lt;br /&gt;
* Create your M2DA File that you want to refer to your talk-table strings. Never Mind using the real IDs at this stage.&lt;br /&gt;
* Use the &amp;quot;Exelprocessor&amp;quot; to create the GDA file.&lt;br /&gt;
* Open the GDA-File with the toolset or Ely's GDA-Editor App (http://social.bioware.com/project/755/)&lt;br /&gt;
* Change the StringIDs to the StringIDs in your talktable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Remark:''' &lt;br /&gt;
The previous Version stated: ''Take that StringID and add 16777216 to the number.'' this apüears to be wrong.&lt;br /&gt;
&lt;br /&gt;
[[Category:2DAs]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7914</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7914"/>
				<updated>2009-11-18T03:32:03Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
        case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            if (IsPartyMember(oOwner)) // only show if the item went into the player's inventory&lt;br /&gt;
            {&lt;br /&gt;
                DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            }&lt;br /&gt;
            //Now we didn't handle the event itself but just displayed a floaty --&amp;gt; let the original event handler take over.&lt;br /&gt;
            HandleEvent(ev); // this passes the event to the default handler of the event's target object&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7889</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7889"/>
				<updated>2009-11-17T18:17:45Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
        case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            if (IsPartyMember(oOwner)) // only show if the item went into the player's inventory&lt;br /&gt;
            {&lt;br /&gt;
                DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            }&lt;br /&gt;
            //Now we didn't handle the event itself but just displayed a floaty --&amp;gt; let the original event handler take over.&lt;br /&gt;
            HandleEvent(ev); // this is correct, it passes the event to the default handler for the event's target object&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7880</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7880"/>
				<updated>2009-11-17T13:59:01Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
        case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            if (IsPartyMember(oOwner)) // only show if the item went into the player's inventory&lt;br /&gt;
            {&lt;br /&gt;
                DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            }&lt;br /&gt;
            //Now we didn't handle the event itself but just displayed a floaty --&amp;gt; let the original event handler take over.&lt;br /&gt;
            //HandleEvent(ev,R&amp;quot;player_core.ncs&amp;quot;); &amp;lt;-- this is bad because the inventory_added event doesn't just fire for players&lt;br /&gt;
            HandleEvent(ev); // this is correct, it passes the event to the default handler for the event's target object&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7879</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7879"/>
				<updated>2009-11-17T12:56:25Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
        case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            if (IsPartyMember(OBJECT_SELF)) // only show if the item went into the player's inventory&lt;br /&gt;
            {&lt;br /&gt;
                DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            }&lt;br /&gt;
            //Now we didn't handle the event itself but just displayed a floaty --&amp;gt; let the original event handler take over.&lt;br /&gt;
            //HandleEvent(ev,R&amp;quot;player_core.ncs&amp;quot;); &amp;lt;-- this is bad because the inventory_added event doesn't just fire for players&lt;br /&gt;
            HandleEvent(ev); // this is correct, it passes the event to the default handler for the event's target object&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7876</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7876"/>
				<updated>2009-11-17T11:02:20Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            //Now we didn't handle the event itsel but just displayed a floaty --&amp;gt; let the original event handler take over.&lt;br /&gt;
            HandleEvent(ev,R&amp;quot;player_core.ncs&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7875</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7875"/>
				<updated>2009-11-17T11:01:05Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            //Now we didn't handle the event itsel but just displayed a floaty --&amp;gt; let the original event handler take over.&lt;br /&gt;
            HandleEvent(ev,R&amp;quot;player_core.nss&amp;quot;);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7862</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7862"/>
				<updated>2009-11-17T02:11:57Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
''still needs some polishing but the basics should be there''&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=How-tos&amp;diff=7861</id>
		<title>How-tos</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=How-tos&amp;diff=7861"/>
				<updated>2009-11-17T02:11:15Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page lists how to accomplish tasks that are relatively simple and commonly needed, but that touch on multiple areas of the toolset or are difficult to figure out intuitively how to do.&lt;br /&gt;
&lt;br /&gt;
Just collecting ideas at the moment, add headers if you think a how-to is needed on a particular subject.&lt;br /&gt;
&lt;br /&gt;
*[[3D control]]&lt;br /&gt;
&lt;br /&gt;
== Run a cutscene from a trigger ==&lt;br /&gt;
&lt;br /&gt;
!!compile fails in test database due to bad core libraries, so this hasn't been tested!!&lt;br /&gt;
&lt;br /&gt;
Create a script:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
#include &amp;quot;global_objects_h&amp;quot;&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
void main ()&lt;br /&gt;
{&lt;br /&gt;
    event ev = GetCurrentEvent();&lt;br /&gt;
    int nEventType = GetEventType(ev);&lt;br /&gt;
    int nEventHandled = FALSE;&lt;br /&gt;
    switch (nEventType)&lt;br /&gt;
    {&lt;br /&gt;
    case EVENT_TYPE_ENTER:&lt;br /&gt;
         {&lt;br /&gt;
         object oCreature = GetEventCreator(ev);&lt;br /&gt;
         if(IsPlayer(oCreature)) { &lt;br /&gt;
              resource rCutscene = R&amp;quot;my_cutscene.cut&amp;quot;;&lt;br /&gt;
              CS_LoadCutscene(rCutscene);&lt;br /&gt;
              DestroyObject(OBJECT_SELF, 0);&lt;br /&gt;
         }&lt;br /&gt;
         break;&lt;br /&gt;
    }&lt;br /&gt;
    if (!nEventHandled) //If this event wasn't handled by this script, let the core script try&lt;br /&gt;
    {&lt;br /&gt;
        HandleEvent(ev, RESOURCE_SCRIPT_TRIGGER_CORE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And set it as the event script for the trigger that you want to have run the cutscene.&lt;br /&gt;
&lt;br /&gt;
== Add a follower to the player's party ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
if(IsPlayer(oCreature)) {&lt;br /&gt;
  object oFollower = GetObjectByTag(&amp;quot;myfollower&amp;quot;);&lt;br /&gt;
  UT_HireFollower(oCreature, oFollower);&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Have an enemy play possum and then get up to fight ==&lt;br /&gt;
&lt;br /&gt;
Set the creature's CREATURE_SPAWN_DEAD variable to 2.&lt;br /&gt;
&lt;br /&gt;
When it's time for the creature to rise and attack, execute the following script commands:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
...&lt;br /&gt;
WR_SetObjectActive(oCreature, TRUE);&lt;br /&gt;
SetCommandable(oCreature, TRUE);&lt;br /&gt;
// Make sure to set this flag back to 0 to avoid problems with savegames.&lt;br /&gt;
SetLocalInt(oCreature, CREATURE_SPAWN_DEAD, 0);&lt;br /&gt;
UT_CombatStart(oCreature, oPC);&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Insert content into an existing area ==&lt;br /&gt;
&lt;br /&gt;
If you want to add new content on to an existing area (for example, putting a new character or area transition door into an area that exists in the single-player campaign) there are two different ways to do it. One is to override the existing area with a new area of your own design that duplicates the original with the exception of your additions. This is straightforward to do but can interact poorly with other add-ons - you can only have one version of an area active at a time.&lt;br /&gt;
&lt;br /&gt;
A more elegant and extensible approach is to use a [[PRCSCR]]_-prefixed M2DA. The PRCSCR M2DA has a very simple structure and a simple but profound effect:&lt;br /&gt;
&lt;br /&gt;
*ID - a unique integer identifier for each row&lt;br /&gt;
*AreaListName - a string that identifies a specific area list, or the special keyword &amp;quot;any&amp;quot;.&lt;br /&gt;
*Script - the name of a script file.&lt;br /&gt;
&lt;br /&gt;
Whenever a player enters an area in an area list in this M2DA the associated script will be run. A modder can therefore include a script with his mod that will be run when the player enters an existing area that he didn't create. This script can freely add or remove placeables and creatures and perform whatever other modifications to the area that a script is capable of doing.&lt;br /&gt;
&lt;br /&gt;
Note that the script will be run every time the player enters the area, so you'll want to have an associated plot flag to ensure that the changes are only made once.&lt;br /&gt;
&lt;br /&gt;
The following example is a script that adds a new character from an add-on module to an existing area in the main game:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;dascript&amp;gt;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    //Check whether we've added Joblo already.&lt;br /&gt;
    if (WR_GetPlotFlag(&amp;quot;joblos_quest&amp;quot;, JOBLO_ADDED_TO_TOWN) == FALSE)&lt;br /&gt;
    {&lt;br /&gt;
        object oTown = GetObjectByTag(&amp;quot;lot100ar_lothering&amp;quot;); //An area's tag is the same as its resource name&lt;br /&gt;
        vector vJobloLocation = Vector(126.745f,120.724f,0.460568f); // See below for how to get these coordinates&lt;br /&gt;
&lt;br /&gt;
        CreateObject(&lt;br /&gt;
            OBJECT_TYPE_CREATURE,&lt;br /&gt;
            R&amp;quot;joblo.utc&amp;quot;,&lt;br /&gt;
            Location(oTown, vJobloLocation, 180.0f) //See below for how to get the value for orientation&lt;br /&gt;
        )&lt;br /&gt;
&lt;br /&gt;
        WR_SetPlotFlag(&amp;quot;joblos_quest&amp;quot;, JOBLO_ADDED_TO_TOWN, TRUE);&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/dascript&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since you can't add [[waypoint]]s to an existing area you'll need to enter the position and orientation values for the target location manually. You can find them by creating a local copy of the area in question and temporarily adding a waypoint to copy down the coordinates and orientation you'll need.&lt;br /&gt;
&lt;br /&gt;
== Add new music ==&lt;br /&gt;
&lt;br /&gt;
Open up [[FMOD]]&lt;br /&gt;
&lt;br /&gt;
It creates a project - set the build directory to your DA override directory - with project highlighted, it is over on the top right about half way down the project settings. You can set a default resource directory but that will just set where the file browser defaults to so it is optional. I'd also define a name in those parameters while you are there.&lt;br /&gt;
&lt;br /&gt;
From there, you need a new event !!(not sure whether a blank default is generated or whether you have to right click and make a default blank event)!!. After you have an event, highlight it and change to the event tab (2nd tab). Here you need to import your file to link to that event.&lt;br /&gt;
&lt;br /&gt;
On that tab I think it creates a empty row for your new event - right click and add wavetable or something like that - I think I use the top option. (Again, might be wrong but the basic goal is getting a audio file in that screen that plays when you hit the play button at the top)&lt;br /&gt;
&lt;br /&gt;
Browse to your wav file or whatever you have.&lt;br /&gt;
&lt;br /&gt;
From there you should be able to play the sound both in the pop-up box and (once that is closed) back in the event tab. You'll see the name of the wave in that once empty row (IIRC).&lt;br /&gt;
&lt;br /&gt;
If you want, you can add layers of sounds to this event using the same process over and over, but keeping it simple; we'll just move along.&lt;br /&gt;
&lt;br /&gt;
Now you have a project and an event. You can set various parameters on the first tab that alter pitch etc on the first tab. (When you import the sound, you set whether it is a one shot or looping).&lt;br /&gt;
&lt;br /&gt;
Once you have that done, go to the top drop down and find build. Build the files and you should see extra files in your override directory.&lt;br /&gt;
&lt;br /&gt;
From there, just open up the toolset (or hit refresh from within the toolset) and your project and event sounds should show up in the listing of sounds.&lt;br /&gt;
&lt;br /&gt;
You can then drag and drop them into the game or cutscene and they will play.&lt;br /&gt;
&lt;br /&gt;
== Adding music to cutscenes ==&lt;br /&gt;
&lt;br /&gt;
The way we have been doing the music changes is via placed sound objects.  These sound objects are generally created in [[FMOD]], and in FMOD you can say if the music will persist after the cutscene or end when the cutscene ends.&lt;br /&gt;
&lt;br /&gt;
We are just using other sounds to switch music tracks. Designers can add music switch parameter to any sound in Fmod Designer, usually this is just VO line to change music track, for example:&lt;br /&gt;
&lt;br /&gt;
[[Image:FMOD music switch.jpg]]&lt;br /&gt;
&lt;br /&gt;
If there are no other sounds, designers can create empty sound event and add #music parameter there and place this sound on cutscene timeline.&lt;br /&gt;
Music track has to be defined in the same group as music in current area in “music.fdp” to work.&lt;br /&gt;
&lt;br /&gt;
[[Image:FMOD music switch 2.jpg]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 #music:name,1 – non looping, for stingers&lt;br /&gt;
 #music:name – for looping music&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Delete resources ==&lt;br /&gt;
&lt;br /&gt;
Resource deletion can sometimes be a bit complicated. Check the following:&lt;br /&gt;
&lt;br /&gt;
*Resources must be checked in when deleted. This is so that the toolset can be sure that all dependencies have been properly resolved.&lt;br /&gt;
*If other resources reference the resource it can't be deleted. This means that sometimes you'll need to delete resources in a specific order. For example, you can't delete a creature that's being used in an area, but you could delete the area and then delete the creature. Occasionally there may be circular references that you'll need to break by editing the resources before deleting them. For example:&lt;br /&gt;
**A stage can reference an area, which can then reference the stage.&lt;br /&gt;
**A plot file can have an associated event script, which will almost certainly include the plot file.&lt;br /&gt;
**A stage can reference a creature, which references a dialogue, which references the original stage.&lt;br /&gt;
&lt;br /&gt;
== Removing Modules ==&lt;br /&gt;
&lt;br /&gt;
Deleting a Module from the Toolset&lt;br /&gt;
Setup:&lt;br /&gt;
I created a module called Meep with a unique id of rcfMeep, added in one area with a waypoint, configured the starting area/waypoint info, and exported it with dependencies.  And now I want to strip it out.&lt;br /&gt;
&lt;br /&gt;
Step 1: Removing it from the game&lt;br /&gt;
&lt;br /&gt;
* Navigate to My Documents\Bioware\AddIns&lt;br /&gt;
* Delete the folder called rcfMeep&lt;br /&gt;
* Done&lt;br /&gt;
&lt;br /&gt;
Removing from the game is fairly easy.  The toolset?  Not so much.  The reason for this is that the information is stored in the SQL Database.  Now if you just want to remove the module from the Manage Modules list, that is easy.&lt;br /&gt;
&lt;br /&gt;
* Open Sql Server Management Studio Express.  I'm not sure if the default installation installs this or not.  If not, it can be downloaded from Microsoft.&lt;br /&gt;
* Connect to the BWDATOOLSET server, assuming that you kept the default options.&lt;br /&gt;
* Expand Databases&lt;br /&gt;
* Expand bw_dragonage_content&lt;br /&gt;
* Expand Tables&lt;br /&gt;
* Right click and select open on the dbo.Modules table&lt;br /&gt;
* This will bring up an excell-like window.  Find your module, right-click on the row, and select delete.  Say ok to the confirmation.&lt;br /&gt;
* Module is now PERMANENTLY removed.  Absolutely no way of recovering it.&lt;br /&gt;
&lt;br /&gt;
Now depending on the size of the Module, you just orphaned a bunch of resources.  Areas, placables, conversations, they all get placed into the database.  And once you remove the module ID, you just lost your ability to remove these resources.  Now do keep in mind that 95% of this junk is just text, so it hardly takes up any room.  It's not really a major issue.  However if you [[How-tos#Delete resources|delete out the resources]] within the toolset before you remove the module reference you should avoid this.&lt;br /&gt;
&lt;br /&gt;
== Override Events (e.g. those in player_core) ==&lt;br /&gt;
Look here: [[Event override]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7860</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7860"/>
				<updated>2009-11-17T02:08:39Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
// file: my_event_override.nss&lt;br /&gt;
// author: Pheelon&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7859</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7859"/>
				<updated>2009-11-17T02:07:54Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like.&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7858</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7858"/>
				<updated>2009-11-17T02:07:42Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== How to override an event? ==&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
'''Now just handle the event in your script as you like:'''&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7857</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7857"/>
				<updated>2009-11-17T02:06:58Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like:&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7856</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7856"/>
				<updated>2009-11-17T02:05:56Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like:&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// --- script start ---&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7855</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7855"/>
				<updated>2009-11-17T02:05:15Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like:&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
// --- script start ---&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7854</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7854"/>
				<updated>2009-11-17T02:03:28Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;br /&gt;
&lt;br /&gt;
Now just handle the event in your script as you like:&lt;br /&gt;
&lt;br /&gt;
For example i want to have a screen-message every time i pick up an item (or steal one):&lt;br /&gt;
&lt;br /&gt;
// --- script start ---&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;utility_h&amp;quot;&lt;br /&gt;
#include &amp;quot;wrappers_h&amp;quot;&lt;br /&gt;
#include &amp;quot;events_h&amp;quot;&lt;br /&gt;
void main()&lt;br /&gt;
{&lt;br /&gt;
    event ev   = GetCurrentEvent();&lt;br /&gt;
    int nEvent = GetEventType(ev);&lt;br /&gt;
    object oOwner = GetEventCreator(ev);&lt;br /&gt;
&lt;br /&gt;
    switch (nEvent)&lt;br /&gt;
    {&lt;br /&gt;
         case EVENT_TYPE_INVENTORY_ADDED:&lt;br /&gt;
        {&lt;br /&gt;
            object oItem = GetEventObject(ev, 0);&lt;br /&gt;
            DisplayFloatyMessage(oOwner, GetName(oItem) + &amp;quot; added&amp;quot;, FLOATY_MESSAGE, 14654488, 10.0);&lt;br /&gt;
            break;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
// --- script end ---&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7853</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7853"/>
				<updated>2009-11-17T02:00:31Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events.xls|Events]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7852</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7852"/>
				<updated>2009-11-17T02:00:18Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
'''Its pretty simple:'''&lt;br /&gt;
&lt;br /&gt;
Create a [[Events|Events.xls]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7851</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7851"/>
				<updated>2009-11-17T02:00:08Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
&amp;quot;&amp;quot;Its pretty simple:&amp;quot;&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Create a [[Events|Events.xls]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7850</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7850"/>
				<updated>2009-11-17T01:59:57Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
Its pretty simple:&lt;br /&gt;
&lt;br /&gt;
Create a [[Events|Events.xls]] M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;br /&gt;
&lt;br /&gt;
In this case i used the &amp;quot;EVENT_TYPE_INVENTORY_ADDED&amp;quot; Event and Handle it in my custom Event-Handler-Script: my_event_override&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7849</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7849"/>
				<updated>2009-11-17T01:58:13Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
Its pretty simple:&lt;br /&gt;
&lt;br /&gt;
Create a Events M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[Events.xls]]&lt;br /&gt;
&lt;br /&gt;
[[File:Events.png]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=File:Events.png&amp;diff=7848</id>
		<title>File:Events.png</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=File:Events.png&amp;diff=7848"/>
				<updated>2009-11-17T01:58:00Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7847</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7847"/>
				<updated>2009-11-17T01:57:39Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
Its pretty simple:&lt;br /&gt;
&lt;br /&gt;
Create a Events M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[Events.xls]]&lt;br /&gt;
&lt;br /&gt;
[[File:Events.jpg]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	<entry>
		<id>https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7846</id>
		<title>Event override</title>
		<link rel="alternate" type="text/html" href="https://www.datoolset.net/mw/index.php?title=Event_override&amp;diff=7846"/>
				<updated>2009-11-17T01:57:17Z</updated>
		
		<summary type="html">&lt;p&gt;AND04: Created page with 'How to override an event?  Its pretty simple:  Create a Events M2DA File:  Events.xls  Events.png'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;How to override an event?&lt;br /&gt;
&lt;br /&gt;
Its pretty simple:&lt;br /&gt;
&lt;br /&gt;
Create a Events M2DA File:&lt;br /&gt;
&lt;br /&gt;
[[Events.xls]]&lt;br /&gt;
&lt;br /&gt;
[[Events.png]]&lt;/div&gt;</summary>
		<author><name>AND04</name></author>	</entry>

	</feed>