> For the complete documentation index, see [llms.txt](https://guide.cronuszen.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://guide.cronuszen.com/gpcscripting/gpc-script-guide/gpc-developer-guide/functions/internal-functions/combo-functions.md).

# Combo Functions

### Combo Functions and Commands

| **Function**            | **Description**                                    |
| ----------------------- | -------------------------------------------------- |
| combo\_run              | Runs a combo.                                      |
| combo\_running          | Checks if a combo is running.                      |
| combo\_stop             | Stops a running combo.                             |
| combo\_restart          | Restarts a running combo.                          |
| combo\_suspend          | Suspends (pauses) a combo.                         |
| combo\_suspended        | Checks if a combo is in the suspended state.       |
| combo\_current\_step    | Gets the current step.                             |
| combo\_step\_time\_left | Gets the time left of the currently executed step. |
| combo\_stop\_all        | Stops all combos.                                  |
| combo\_suspend\_all     | Suspends (pauses) all combos.                      |
| combo\_resume           | Resumes the suspended combo.                       |
| combo\_resume\_all      | Resumes all suspended combos.                      |

***

### combo\_run

combo\_run does precisely what the name suggests and runs a combo. However, unlike the combo\_restart command, it has no effect if the combo is currently running. It will only start a combo if it is not already running.

Code-Snippet

```
combo_run(MyCombo);
```

Syntax

combo\_run( \<combo\_name> );

Parameters

\<combo\_name> : The name assigned to a combo

Returns

Nothing

***

### combo\_running

combo\_running is a function that can be used in your code to check is a combo is running is not. If the combo named in its parameter is running, then it will return TRUE. If not, it will return FALSE.

Code-Snippet

```
combo_running(MyCombo);
```

Syntax

combo\_running( \<combo\_name> );

Parameters

\<combo\_name> : The name assigned to a combo

Returns

TRUE if the combo is currently running and FALSE if it is not.

***

### combo\_stop

combo\_stop does precisely what the name suggests and will stop a combo if it is running. As with combo\_run, it has no effect if the combo is currently not running.

Code-Snippet

```
combo_stop(MyCombo);
```

Syntax

combo\_stop( \<combo\_name> );

Parameters

\<combo\_name> : The name assigned to a combo

Returns

Nothing

***

### combo\_restart

combo\_restart will restart a running combo. If the combo started within its parameters is currently running, it will be restarted from the beginning. If the combo is not currently running, it will be run.

Code-Snippet

```
combo_restart(MyCombo);
```

Syntax

combo\_restart( \<combo\_name> );

Parameters

\<combo\_name> : The name assigned to a combo

Returns

Nothing

***

### combo\_suspend

combo\_suspend command suspends (pauses) a combo from running.

Code-Snippet

```
combo_suspend(MyCombo);
```

Syntax

combo\_suspend( \<combo\_name> );

Parameters

\<combo\_name> : The name assigned to a combo

Returns

Nothing

***

### combo\_suspended

combo\_suspended Check to see if a combo is suspended.

Code-Snippet

```
combo_suspended(MyCombo);
```

Syntax

combo\_suspended( \<combo\_name> );

Parameters

\<combo\_name> : Checks the name assigned to a combo if suspended

Returns

Nothing

***

### combo\_current\_step

combo\_current\_step keywords returning the current step

Code-Snippet

```
combo_current_step(MyCombo);
```

Syntax

combo\_current\_step ( \<combo\_name> );

Parameters

\<combo\_name> : Checks the name assigned keywords returning the current step

Returns

Nothing

***

### combo\_step\_time\_left

combo\_step\_time\_left Checks the time left of the currently executed step

Code-Snippet

```
combo_step_time_left(MyCombos);
```

Syntax

combo\_step\_time\_left( \<combo\_name> );

Parameters

\<combo\_name> : Checks the time left of the currently executed step

Returns

Nothing

***

### combo\_stop\_all

combo\_stop\_all Stops all combos from running.

Code-Snippet

```
combo_stop_all(MyCombos);
```

Syntax

combo\_stop\_all ( \<combo\_name> );

Parameters

\<combo\_name> : Stops all combos from running.

Returns

Nothing

***

### combo\_suspend\_all

combo\_suspend\_all Suspends all combos that is running.

Code-Snippet

```
combo_suspend_all(MyCombos);
```

Syntax

combo\_suspend\_all ( \<combo\_name> );

Parameters

\<combo\_name> : Suspends all combos that is running.

Returns

Nothing

***

### combo\_resume

combo\_resume Will resume a combo if it is suspended or a running combo.

Code-Snippet

```
combo_resume(MyCombo);
```

Syntax

combo\_resume ( \<combo\_name> );

Parameters

\<combo\_name> : resume a combo if it is suspended or a running combo.

Returns

Nothing

***

### combo\_resume\_all

combo\_resume\_all Will resume all combos if it is suspended or running combos.

Code-Snippet

```
combo_resume_all(MyCombo);
```

Syntax

combo\_resume\_all ( \<combo\_name> );

Parameters

\<combo\_name> : resume all combos if it is suspended or a running combos.

Returns

Nothing

***

### Combo Specific Commands

#### wait

wait command instructs the Virtual Machine within the Cronus on how long the last set of commands should be executed for. The length of time they instruct the VM to execute the commands is represented in milliseconds and can rand from 1ms to 32767ms (That's 1 millisecond to just over 32 seconds). The commands executed during the wait time are those placed between the current wait and the previous wait time, the current wait time and the previous call command, or the start of the combo, whichever comes first. As shown in the example below:

Code-Snippet

```
combo MyCombo {

    set_val(19, 100);//¯¯|
    set_val(18, 100);// | These two buttons will be held
    wait(1000); //←_| for 1000 milliseconds (1 second)

    set_val(3, 100);//¯¯|
    set_val(7, 100);// | These two buttons will be held
    wait(1500); //←_| for 1500 milliseconds (1.5 seconds)

    set_val(9, -100);//¯¯| This axis will be held
    wait(2000); //←_| for 2000 milliseconds (2 seconds)

}
```

Info: The wait command can only be used within a combo and must be at the first level of the combo block, it cannot be nested.

Code-Snippet

```
wait(300); // wait 300ms
```

Syntax

wait( \<time> );

Parameters

\<time> : The length of time the last commands should be executed for represented in milliseconds ranging from 10 to 4000.

Returns

Nothing

***

#### call

call command can only be used in combos and pauses the current combo to execute the combo called. Once the combo has finished, the previous combo is resumed.

Code-Snippet

```
combo _1st_combo {

    set_val(XB1_B, 100);
    wait(100);
    wait(200);
    call(_2nd_combo); //_1st_combo is paused until _2nd_combo is finished
    set_val(XB1_Y, 100);
    wait(100);
    wait(200);

}

combo _2nd_combo {

    set_val(XB1_RB, 100);
    wait(100);
    wait(200);

} //Once this combo has ended, the combo is was called from can resume
```

Syntax

call( \<combo\_name> );

Parameters

\<combo\_name> : The name assigned to a combo

Returns

Nothing


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://guide.cronuszen.com/gpcscripting/gpc-script-guide/gpc-developer-guide/functions/internal-functions/combo-functions.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
