let currentAnim = null;
function playAnimation(dict, anim, flags = 1) {
mp.game.streaming.requestAnimDict(dict);
while (!mp.game.streaming.hasAnimDictLoaded(dict)) mp.game.wait(0);
mp.players.local.taskPlayAnim(dict, anim, 8.0, -8.0, -1, flags, 0, false, false, false);
currentAnim = { dict, anim, flags };
}
mp.keys.bind(0x5A, false, function() {
if (!currentAnim) {
playAnimation("mp_arresting", "arrest_on_floor_front_left_cam", 1);
} else {
mp.players.local.stopAnimTask(currentAnim.dict, currentAnim.anim, 3.0);
currentAnim = null;
}
});
mp.events.add("entityStreamIn", (entity) => {
if (entity.type === "player" && entity.handle === mp.players.local.handle && currentAnim) {
playAnimation(currentAnim.dict, currentAnim.anim, currentAnim.flags);
}
});
mp.events.add("playerWeaponShot", () => {
if (currentAnim) {
playAnimation(currentAnim.dict, currentAnim.anim, currentAnim.flags);
}
});
mp.events.add("render", () => {
if (currentAnim && !mp.players.local.isPlayingAnim(currentAnim.dict, currentAnim.anim, 3)) {
playAnimation(currentAnim.dict, currentAnim.anim, currentAnim.flags);
}
});