Difference between revisions of "Scripting"
Silverfish (talk | contribs) (Added script documentation path for Linux.) |
|||
(11 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
− | Overgrowth uses [http:// | + | Overgrowth uses [http://www.angelcode.com/angelscript/ AngelScript] as its core '''scripting''' language. The [http://www.angelcode.com/angelscript/sdk/docs/manual/index.html AngelScript Manual] is the best place to start learning. |
− | == Checking for User Input: == | + | As of Alpha 209, the game automatically generates a header file showing all the parameters that are exposed to the scripting layer, including comments and parameter names. This file is named aschar_docs.h and can be found |
+ | |||
+ | '''in Windows''' | ||
+ | *under ~\Documents\Wolfire\Overgrowth | ||
+ | |||
+ | '''in Mac OSX''' | ||
+ | *under ~/Library/Application\ Support/Overgrowth | ||
+ | |||
+ | '''in Linux''' | ||
+ | *under ~/.local/share/Overgrowth | ||
+ | |||
+ | http://blog.wolfire.com/2015/02/Overgrowth-a209-video-changelog | ||
+ | |||
+ | |||
+ | ==File Locations== | ||
+ | |||
+ | ===OSX=== | ||
+ | |||
+ | Overgrowth comes as an Application Package. Within this package are folders, which can be navigated by first right-clicking on Overgrowth.app in the Finder and selecting "Show Package Contents" from the contextual menu. To access the scripting files, navigate to | ||
+ | |||
+ | <pre>Overgrowth/Contents/Mac\ OS/Data/Scripts/</pre> | ||
+ | |||
+ | ===Windows=== | ||
+ | {{stub}} | ||
+ | ===Linux=== | ||
+ | {{stub}} | ||
+ | |||
+ | In these locations you will see various files, many of which have the suffix '''.as''', for AngelScript (also for ActionScript, but that's another story). They can be opened and edited with your favorite text editor. Any changes made while the game is running will be updated in real time. Be sure to make backups! | ||
+ | |||
+ | ==General Usage Scenarios== | ||
+ | === Checking for User Input: === | ||
You can check for keypresses by using the '''boolean''' check function '''GetInputDown()''': | You can check for keypresses by using the '''boolean''' check function '''GetInputDown()''': | ||
Line 71: | Line 101: | ||
Here is a complete list of scripting tags for key presses: | Here is a complete list of scripting tags for key presses: | ||
− | < | + | ---- |
− | backspace | + | <div style="column-count:7;-moz-column-count:7;-webkit-column-count:7"> |
− | tab | + | : backspace |
− | clear | + | : tab |
− | return | + | : clear |
− | pause | + | : return |
− | esc | + | : pause |
− | space | + | : esc |
− | ! | + | : space |
− | " | + | : ! |
− | # | + | : " |
− | $ | + | : # |
− | & | + | : $ |
− | ' | + | : & |
− | ( | + | : ' |
− | ) | + | : ( |
− | * | + | : ) |
− | + | + | : * |
− | , | + | : + |
− | - | + | : , |
− | . | + | : - |
− | / | + | : . |
− | 0 | + | : / |
− | 1 | + | : 0 |
− | 2 | + | : 1 |
− | 3 | + | : 2 |
− | 4 | + | : 3 |
− | 5 | + | : 4 |
− | 6 | + | : 5 |
− | 7 | + | : 6 |
− | 8 | + | : 7 |
− | 9 | + | : 8 |
− | : | + | : 9 |
− | ; | + | : : |
− | < | + | : ; |
− | = | + | : < |
− | > | + | : = |
− | ? | + | : > |
− | @ | + | : ? |
− | [ | + | : @ |
− | \ | + | : [ |
− | ] | + | : \ |
− | ^ | + | : ] |
− | _ | + | : ^ |
− | ` | + | : _ |
− | a | + | : ` |
− | b | + | : a |
− | c | + | : b |
− | d | + | : c |
− | e | + | : d |
− | f | + | : e |
− | g | + | : f |
− | h | + | : g |
− | i | + | : h |
− | j | + | : i |
− | k | + | : j |
− | l | + | : k |
− | m | + | : l |
− | n | + | : m |
− | o | + | : n |
− | p | + | : o |
− | q | + | : p |
− | r | + | : q |
− | s | + | : r |
− | t | + | : s |
− | u | + | : t |
− | v | + | : u |
− | w | + | : v |
− | x | + | : w |
− | y | + | : x |
− | z | + | : y |
− | delete | + | : z |
− | keypad0 | + | : delete |
− | keypad1 | + | : keypad0 |
− | keypad2 | + | : keypad1 |
− | keypad3 | + | : keypad2 |
− | keypad4 | + | : keypad3 |
− | keypad5 | + | : keypad4 |
− | keypad6 | + | : keypad5 |
− | keypad7 | + | : keypad6 |
− | keypad8 | + | : keypad7 |
− | keypad9 | + | : keypad8 |
− | keypad. | + | : keypad9 |
− | keypad/ | + | : keypad. |
− | keypad* | + | : keypad/ |
− | keypad- | + | : keypad* |
− | keypad+ | + | : keypad- |
− | keypadenter | + | : keypad+ |
− | keypad= | + | : keypadenter |
− | up | + | : keypad= |
− | down | + | : up |
− | right | + | : down |
− | left | + | : right |
− | insert | + | : left |
− | home | + | : insert |
− | end | + | : home |
− | pageup | + | : end |
− | pagedown | + | : pageup |
− | f1 | + | : pagedown |
− | f2 | + | : f1 |
− | f3 | + | : f2 |
− | f4 | + | : f3 |
− | f5 | + | : f4 |
− | f6 | + | : f5 |
− | f7 | + | : f6 |
− | f8 | + | : f7 |
− | f9 | + | : f8 |
− | f10 | + | : f9 |
− | f11 | + | : f10 |
− | f12 | + | : f11 |
− | f13 | + | : f12 |
− | f14 | + | : f13 |
− | f15 | + | : f14 |
− | numlock | + | : f15 |
− | capslock | + | : numlock |
− | scrollock | + | : capslock |
− | rshift | + | : scrollock |
− | lshift | + | : rshift |
− | rctrl | + | : lshift |
− | lctrl | + | : rctrl |
− | ralt | + | : lctrl |
− | lalt | + | : ralt |
− | rmeta | + | : lalt |
− | lmeta | + | : rmeta |
− | lsuper | + | : lmeta |
− | rsuper | + | : lsuper |
− | mode | + | : rsuper |
− | compose | + | : mode |
− | help | + | : compose |
− | print | + | : help |
− | sysreq | + | : print |
− | break | + | : sysreq |
− | menu | + | : break |
− | power | + | : menu |
− | euro</ | + | : power |
− | + | : euro | |
+ | </div> | ||
+ | ---- | ||
[[Category:Overgrowth]] | [[Category:Overgrowth]] | ||
+ | === Writing classes and functions in your own script: === | ||
Scripts can be written outside of the game code, and interact with it using objects and function calls. These do not need to be written as classes and could be simple functions. A simple class might look like this: | Scripts can be written outside of the game code, and interact with it using objects and function calls. These do not need to be written as classes and could be simple functions. A simple class might look like this: | ||
<pre> | <pre> | ||
class Example { | class Example { | ||
− | int example_variable; // | + | int example_variable; // Variables cannot be initialized here |
− | Example() { | + | Example() { |
− | example_variable = 1; | + | example_variable = 1; |
− | print_var(); | + | print_var(); |
− | } | + | } |
− | void print_var() { | + | void print_var() { |
− | Print(example_variable); | + | Print(example_variable); |
− | } | + | } |
}; | }; | ||
− | //Initialize a class that the game can use | + | |
+ | // Initialize a class that the game can use | ||
Example ex1 = Example(); | Example ex1 = Example(); | ||
ex1.example_variable = 2; | ex1.example_variable = 2; | ||
ex1.print_var(); | ex1.print_var(); | ||
</pre> | </pre> | ||
− | This script could be included in any of those in Data/Scripts, by writing | + | This script could be included in any of those in Data/Scripts, by writing <code>#include "path_to_script.as"</code>, where <code>path_to_script</code> would just be your script name if it were in the scripts folder. |
− | #include "path_to_script.as", where path_to_script would just be your script name if it were in the scripts folder. | ||
It can then be used to create new classes, or use ones defined in your script. | It can then be used to create new classes, or use ones defined in your script. | ||
Writing you scripts separate from the game files makes your code easier to develop and update! | Writing you scripts separate from the game files makes your code easier to develop and update! |
Latest revision as of 11:29, 7 September 2015
Overgrowth uses AngelScript as its core scripting language. The AngelScript Manual is the best place to start learning.
As of Alpha 209, the game automatically generates a header file showing all the parameters that are exposed to the scripting layer, including comments and parameter names. This file is named aschar_docs.h and can be found
in Windows
- under ~\Documents\Wolfire\Overgrowth
in Mac OSX
- under ~/Library/Application\ Support/Overgrowth
in Linux
- under ~/.local/share/Overgrowth
http://blog.wolfire.com/2015/02/Overgrowth-a209-video-changelog
Contents
File Locations
OSX
Overgrowth comes as an Application Package. Within this package are folders, which can be navigated by first right-clicking on Overgrowth.app in the Finder and selecting "Show Package Contents" from the contextual menu. To access the scripting files, navigate to
Overgrowth/Contents/Mac\ OS/Data/Scripts/
Windows
This article is a stub. You should help Wolfire by expanding it.
Linux
This article is a stub. You should help Wolfire by expanding it.
In these locations you will see various files, many of which have the suffix .as, for AngelScript (also for ActionScript, but that's another story). They can be opened and edited with your favorite text editor. Any changes made while the game is running will be updated in real time. Be sure to make backups!
General Usage Scenarios
Checking for User Input:
You can check for keypresses by using the boolean check function GetInputDown():
Syntax examples:
GetInputDown("a") | returns true if the 'a' key is being pressed, returns false if not |
GetInputDown("attack") | returns true if the left mouse button is being pressed, returns false if not |
GetInputDown("move_left") | returns true if the "left key" is being pressed, returns false if not (by default this key is defined in the config.txt to be the 'a' key) |
The following controls are designed to be relative to the player's preferences and are given a binding in the config.txt file.
Config.txt Dependent References
Predefined Term | Default binding in Config.txt | Scripting Reference Name |
---|---|---|
Left Key | a | move_left |
Right Key | d | move_right |
Up Key | w | move_up |
Down Key | s | move_down |
Crouch Key | left shift | crouch |
Jump Key | space | jump |
Mouse Input
Mouse Button | Scripting Reference Name |
---|---|
Left Mouse Button | attack |
Right Mouse Button | grab |
Generic Key References
Here is a complete list of scripting tags for key presses:
- backspace
- tab
- clear
- return
- pause
- esc
- space
- !
- "
- #
- $
- &
- '
- (
- )
- *
- +
- ,
- -
- .
- /
- 0
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- :
- ;
- <
- =
- >
- ?
- @
- [
- \
- ]
- ^
- _
- `
- a
- b
- c
- d
- e
- f
- g
- h
- i
- j
- k
- l
- m
- n
- o
- p
- q
- r
- s
- t
- u
- v
- w
- x
- y
- z
- delete
- keypad0
- keypad1
- keypad2
- keypad3
- keypad4
- keypad5
- keypad6
- keypad7
- keypad8
- keypad9
- keypad.
- keypad/
- keypad*
- keypad-
- keypad+
- keypadenter
- keypad=
- up
- down
- right
- left
- insert
- home
- end
- pageup
- pagedown
- f1
- f2
- f3
- f4
- f5
- f6
- f7
- f8
- f9
- f10
- f11
- f12
- f13
- f14
- f15
- numlock
- capslock
- scrollock
- rshift
- lshift
- rctrl
- lctrl
- ralt
- lalt
- rmeta
- lmeta
- lsuper
- rsuper
- mode
- compose
- help
- sysreq
- break
- menu
- power
- euro
Writing classes and functions in your own script:
Scripts can be written outside of the game code, and interact with it using objects and function calls. These do not need to be written as classes and could be simple functions. A simple class might look like this:
class Example { int example_variable; // Variables cannot be initialized here Example() { example_variable = 1; print_var(); } void print_var() { Print(example_variable); } }; // Initialize a class that the game can use Example ex1 = Example(); ex1.example_variable = 2; ex1.print_var();
This script could be included in any of those in Data/Scripts, by writing #include "path_to_script.as"
, where path_to_script
would just be your script name if it were in the scripts folder.
It can then be used to create new classes, or use ones defined in your script.
Writing you scripts separate from the game files makes your code easier to develop and update!