> For the complete documentation index, see [llms.txt](https://xeavin.gitbook.io/the-insurgents-handbook/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xeavin.gitbook.io/the-insurgents-handbook/scripts/vm-call-targets/motion-loop-frame.md).

# Motion Loop Frame

### Signature

```c
void motionloopframe(float startFrame, float endFrame); //id:0x00f4
```

### Description

Used before functions like [Std Motion Play](/the-insurgents-handbook/scripts/vm-call-targets/std-motion-play.md) and [Motion Play](/the-insurgents-handbook/scripts/vm-call-targets/motion-play.md) to set the end frame of the next motion of a character (current script) and also the motion's start frame when looped.

Generally, the [Motion Loop](/the-insurgents-handbook/scripts/vm-call-targets/motion-loop.md) function is used afterwards to set the actual loop. If it isn't, the motion will only be played once, but with a specific end frame.

It's usually used in cases where you want a character to perform only parts of a motion. For example, if in a motion, a character sits down, waits a bit and then gets up again. You could find out the start and end frame of the point where the character is sitting and then loop that.

### Augments

#### Start Frame

The start frame of the looped motion.

This argument is ignored when playing the motion for the first time, and is only used once the motion is looped via [Motion Loop](/the-insurgents-handbook/scripts/vm-call-targets/motion-loop.md)(1).

#### End Frame

The end frame of the motion.

### Notes

{% hint style="info" %}
The start frame of this function doesn't always need to equal the one of the [Motion Start Frame](/the-insurgents-handbook/scripts/vm-call-targets/motion-start-frame.md) function. There are also cases where the motion could start on frame x and then loop between frame y and z.&#x20;
{% endhint %}
