NWScript: Difference between revisions
AndrewHowse (talk | contribs) |
AstrixZero (talk | contribs) Redundant template |
||
Line 64: | Line 64: | ||
{{Neverwinter Nights}} |
{{Neverwinter Nights}} |
||
{{ |
{{Bioware games}} |
||
[[Category:Scripting languages]] |
[[Category:Scripting languages]] |
Revision as of 10:21, 11 May 2009
Designed by | BioWare |
---|---|
Developer | BioWare |
First appeared | June 18, 2002 |
Stable release | |
OS | Microsoft Windows, 3rd party tools for Mac OS X and Linux |
License | BioWare EULA |
Website | BioWare Developers Portal |
Influenced by | |
C, Java |
NWScript is the scripting language developed by BioWare for the computer role-playing game Neverwinter Nights. It is based on the C programming language and is implemented in the Aurora toolset. Neverscript, an open source 3rd party editor, has been created for the Mac OS X and Linux versions of NWN because the Aurora toolset has not been ported to those platforms.
NWScript is also used in the video games Star Wars: Knights of the Old Republic and Star Wars: Knights of the Old Republic II The Sith Lords, which use the Odyssey Engine. Neverwinter Nights 2, the sequel to the original NWN, features a modified version of this scripting language.
Syntax
While based on C, NWScript does not have many functions from the C family, excluding logical and binary / ternary operators and some mathematical functions. Function source code is not accessible to the end-user, but the correct syntax is defined in a script file called nwscript.nss. The users can create their own functions, and these can be included in other scripts through the #include directive, which works slightly differently than in C++.
Hello world
NWScript has no way to directly target the screen for output. Instead, for instance, in-game characters such as the player character can be made to speak the typical "Hello world" example message. This script puts a "Hello world" message in the player's message log. For it to work, it should be placed in the OnClientEnter event of the module's properties.
void main()
{
object oPlayer;
oPlayer = GetEnteringObject();
SendMessageToPC(oPlayer, "Hello world");
}
The first line is the void main function which is the function that a NWScript will start at. In the third line, a variable of the type object is declared and assigned a value - i.e. that of the entering player's character. The next line sends the line "Hello world" into the player's message log.
Data types
NWScript allows structs, but not objects. The following common data types are available in NWScript:
NWScript has also introduced some data types for purposes of the Neverwinter Nights game:
- object (refers to game objects, such as NPCs and placeable objects).
- location (refers to the in-game location of an object).
- talent (refers to spells and abilities).
- vector (refers to coordinates of an object, and is a construct of three floats).
- itemproperty (refers to abilities on items such as weapons for use in the game).
File format
When saving a script, the Aurora Toolset saves the plain text of the script as a file with a .nss filename extension. When compiling the script, a .ncs file is created. If turned on, a debug information file with an .ndb extension is also created. The game uses only the .ncs file (and the .ndb file if called).
When saving the created module, the files are packed into a single module file with a .mod extension, along with other information about the layout of the module.
External links
- BioWare NWN Scripting Forum – BioWare's dedicated forum for scripting discussion.
- NWN Lexicon – A database of scripting functions and tutorials.
- Lilac Soul's NWN Script Generator – A popular utility to automatically generate NWscript code.