Get2DAString(string, string, int)

From NWN Lexicon
Revision as of 15:52, 24 December 2017 by Fp (talk | contribs)
Jump to: navigation, search

Retrieves a string value from a *.2da file on a server.

string Get2DAString(
    string s2DA,
    string sColumn,
    int nRow


Name of the *.2DA file on the server.
Name of the column within the *.2DA file.
Row number within the *.2DA file.


Returns the value of a string in the given location of a specified *.2da file. Returns an empty string if file, column, or row is not found. Returns "" (empty string) for "****" entries in the *.2da.

Get2daString() now is cached the first time it is called, into the memory of the computer. Basically - you can now use this function in a loop with a lot less noticeable loss of speed!

Obviously now you cannot change 2da files dynamically out of game, and see changes in-game.


You can now loop using this function. It will now work (or should work) as fast as the game would itself getting information from a 2da file. Likely, there now should be no noticeable loss of speed compared to pre-1.64. If there is loss of speed - it'll be greatly improved upon pre-1.64.

Do not prefix your own *.2da files with the prefix "des_".

The maximum length for a *.2da file is 16 characters. If you specify a longer file name, the function will fail without warning.

Known Bugs

The maximum length of a field within a *.2da file is 267 characters. Anything longer than that will cause NWN to crash.

Although not a bug, the changes to this in 1.64 means you cannot change a 2da file out-of-game, and it change the results in-game. This is intended 1.64 behavior.




// Return TRUE if weapon does bludgeoning damage
// Uses Get2DAString
int GetDoesBludgeoningDamage(object oWeapon)
    int nBaseType = GetBaseItemType(oWeapon);
    return (StringToInt(Get2DAString("baseitems", "WeaponType", nBaseType)) == 2);
    // 2 = bludgeoning

See Also

 author: Charles Feduke, editor: Jasperre, additional contributor(s): Georg Zoeller, Bob Flaherty, Jasperre