= ScriptableController = 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: {{{ ... }}} 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. Things that could be implemented next in the ScriptableController: - Fix the spawning of new objects - Notify the scripts when the player respawns - Waypoints - Firing weapons - Setting the orientation with {{{lookAt}}} - Cutscene tools - Hide/unhide the HUD - Enable/disable user controls - Move the camera around - Register to pickup events - Integration of the quest system Things that need basic knowledge of the lua stack and advanced knowledge of C++ templates: - Make it possible to return values from C++ functions to lua or the other way around - Make optional arguments possible - 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)