Jump to: navigation, search


Available in v1.19

The System Node $KEYCAPTURE implements the MMO Foundation Framework's mechanics for extending HeroBlade with scripted tools. It supports the capture of keyboard events while using HeroBlade's "edit" mode, allowing developers to assign scripted tools/actions to those keys.

For example, the HotSpot Menu that is accessed by CTRL-SHIFT-Clicking the upper-left corner of the viewport, is also assigned to the key combination SHIFT-F1.

What problem(s) does this solve?

What problem(s) does this not solve?


$KEYCAPTURE exists on the CLIENT

The $KEYCAPTURE system node is a Client System Node. Its methods are called in client scripts.


Adding game-specific functionality

As a required class/script, it is not permissible to make changes to the _keyCaptureClassMethods script. Instead, extension/overriding the script is accomplished by the creation of a game-specific class (and class methods script) that is GLOMmed onto the KEYCAPTURE prototype.

Create a game-specific class

Using the DOM Editor create a new (server|client) class. Our recommendation is that you use a class name that incorporates the _keyCapture as a suffix to the name (ex. HJ_keyCapture), this makes it easier to locate the pair of classes (the required script prefixed in _keyCapture and your game-specific class).

Once you have created the game-specific class, create a new client class methods script for that class.

Adding a game-specific class

Adding your game-specific class to the KEYCAPTURE prototype is achieved using the System Node Configuration GUI or the CLI server command \mpac or client |mpac in the Console Panel. The System Node Configuration GUI is the preferred method because it handles the communication to update any instantiations of a system node to reflect the changes you have made.

Using the System Node Configuration GUI


Opening the System Node Configuration GUI requires you to access the hidden Utilities Interface toolbox, located in the top left corner of the render window with ctrl-shift-click (or press F5), which will open the Interface. On the Tools tab within the menu, is an option to open the System Nodes Configuration GUI.

See also: Adapting Clean Engine

Using the CLI

It is important to recognize that modification of the prototype from which a system node is instantiated will not update any instantiations that have already been made in various local GOMs. That means your changes will not take effect until the area (in the case of server system nodes) restarts, or the client (in the case of client system nodes), restarts.

Adding a class to a prototype is done via the CLI command Modify Prototype Add Class(MPAC).

Server: \mpac KEYCAPTURE, hj_keyCapture;
Client: |mpac KEYCAPTURE, hj_keyCapture;

Starting Key Capture

By default, key capture is started by the $BASECLIENT system node in its _FirstChance() method. If you have implemented a game-specific override HE_FirstChance(), you may need to start the key capture in your override by implementing the following code:

if IsHeroBlade()

Stopping Key Capture



Personal tools