| 1 | = ScriptableController = |
| 2 | |
| 3 | With the ScriptableController you can easily make scripts to control various things in orxonox and react to certain events. To do that, add a script to your level: |
| 4 | |
| 5 | {{{ <Level script="scripts/myLevelScript.lua ...> ... </Level> }}} |
| 6 | |
| 7 | The script has to be written in lua and will be executed as soon as the player spawns. The path to the script is relative to {{{data/levels}}} and you preferably put your scripts in the {{{scripts}}} folder with the same name as your level. You can find a list of all functions that are available in lua in the documentation of {{{ScriptableControllerAPI}}} in {{{src/orxonox/scriptablecontroller/scriptable_controller_api.h}}}. If you call a function, make sure it has the correct number of arguments, there are no optional arguments at the moment! Also keep the type of the arguments in mind, if the function expects a string, pass it a string and not a number. |
| 8 | |
| 9 | Things that could be implemented next in the ScriptableController: |
| 10 | - Fix the spawning of new objects |
| 11 | - Notify the scripts when the player respawns |
| 12 | - Waypoints |
| 13 | - Firing weapons |
| 14 | - Setting the orientation with {{{lookAt}}} |
| 15 | - Cutscene tools |
| 16 | - Hide/unhide the HUD |
| 17 | - Enable/disable user controls |
| 18 | - Move the camera around |
| 19 | - Register to pickup events |
| 20 | - Integration of the quest system |
| 21 | |
| 22 | Things that need basic knowledge of the lua stack and advanced knowledge of C++ templates: |
| 23 | - Make it possible to return values from C++ functions to lua or the other way around |
| 24 | - Make optional arguments possible |
| 25 | - Add a 'state' argument that can be passed to {{{register*}}} functions and that will be passed back again to lua when the callback gets called (like a 'this', makes it a bit more object oriented and reduces the number of global variables in lua) |
| 26 | |