Getting Started

Use a script package that exposes Creative support. Save your .py file in its userdata/creative folder and add the filename without its extension to the package’s Creative scripts list. Start with a tiny script and confirm it can set one output.

For a native DLL instead, see C++ Creative Scripts.

python
from creative_helper import Combo
from helios import controls

combo = Combo()

def scan(button_bytes, stick_bytes, **kwargs):
    return

def iterate(button_bytes, stick_bytes, **kwargs):
    combo.buttons = button_bytes
    combo.sticks = stick_bytes

    if controls.get_actual(controls.BUTTON_14):
        combo.set_val(controls.BUTTON_1, 100)

Basic Flow

Import Combo, create one Combo instance, attach the current button_bytes and stick_bytes in iterate, then use helper calls such as combo.set_val(...). Test one output before adding timing or multiple buttons.

Multiple Outputs

python
from creative_helper import Combo
from helios import controls

combo = Combo()

def scan(button_bytes, stick_bytes, **kwargs):
    return

def iterate(button_bytes, stick_bytes, **kwargs):
    combo.buttons = button_bytes
    combo.sticks = stick_bytes

    if controls.get_actual(controls.BUTTON_14):
        combo.set_val(controls.BUTTON_1, 100)
        combo.set_val(controls.STICK_1_X, 35)

Precision Stick Output

Use set_precision_stick when a stick adjustment needs fractional precision:

python
from creative_helper import Combo
from helios import controls

combo = Combo()

def scan(button_bytes, stick_bytes, **kwargs):
    return

def iterate(button_bytes, stick_bytes, **kwargs):
    combo.buttons = button_bytes
    combo.sticks = stick_bytes

    if controls.get_actual(controls.BUTTON_14):
        combo.set_precision_stick(controls.STICK_1_X, 37.5)

Notes

  • scan is the beginning-of-frame hook for the unaltered input/frame state.
  • iterate is the end-of-frame hook for normal output writes and frame-result behavior.
  • Use set_val for normal button, trigger, and stick output.
  • set_val also accepts fractional stick values; set_precision_stick is an explicit axis-only alternative.
  • Keep **kwargs in scan and iterate so scripts can receive runtime context such as live states.
  • Avoid changing many outputs at once until the basic script is stable.