NullSect
Systems nominal

Docs / Animpos / Changelog

Changelog — ns-animpos

0.3.3 — 2026-10-19

  • Fixed (code review): orbiting (right mouse) or zooming while dragging the gizmo made the pose jump, because a drag works against the view at the moment it started. The camera now holds still during a drag.
  • Fixed (code review): at the closest zoom the gizmo could reach the camera's near clip and be cut. Its nearest point now stays at least 0.3 m from the camera (it is pulled less there).

0.3.2 — 2026-10-19

  • Fixed (seen in game): in 0.3.1 the gizmo swam away from the character while the camera turned. It was pulled towards last frame's camera position and the camera moved after it was drawn. It is now drawn after the camera update, against the position given to the camera in this frame, and only 1 m towards it (the closer to the camera, the larger any error). No pull while the camera eases in.

0.3.1 — 2026-10-19

  • Fixed (seen in game): the arrows were hidden inside the character. The gizmo is now drawn in front of everything: it is drawn pulled towards the camera, so it looks the same and sits in the same place on screen.
  • Changed (in-game feedback): the gizmo has a fixed size in the world (0.75 m arms / ring) and scales with the character when zooming, instead of keeping its size on screen. An arrow whose tip leaves the screen at close zoom can still be grabbed by its visible part.
  • Fixed (seen in game): confirming with Enter also opened ns-chat. While the editor runs, ns-animpos sets LocalPlayer.state.nsInputLock; ns-chat 1.8.0 does not open while it is set.

0.3.0 — 2026-10-19

  • New: the editor has its own 3D gizmo instead of FiveM's built-in one. Arrows move along X / Y / Z, the square in the middle moves on the ground, R switches to the rotation ring and back (drag around the ring to turn, a line shows where the pose faces), Q switches world / local axes. The arrow, square or ring under the cursor lights up.
  • Fixed (seen in game): F did not switch to move mode in 0.2.5, only qbx_properties' T did. FiveM keeps one key per gizmo command and gives it to the resource that registers it first, so our key mappings were ignored. With its own gizmo the editor needs no gizmo command and no key mapping, and does not clash with other gizmo scripts. The 0.2.5 key mappings are removed.
  • The editor no longer uses cursor mode (the game's cursor is shown instead).

0.2.5 — 2026-10-19

  • Fixed (seen in game): the gizmo keys did not work from the script at all. The client log shows Access denied for command +gizmoTranslation: FiveM does not let a resource run the gizmo commands, only a key the player presses. Everything that worked came from qbx_properties' key mappings. ns-animpos now registers its own key mappings, so the editor also works on servers without qbx_properties.
  • Changed: R = rotate (rings), F = move (arrows), Q = world / local axes, left mouse = drag. One key cannot toggle, because FiveM only lets a key set one gizmo mode. Players can rebind them in Settings > Key Bindings > FiveM. The HUD follows the keys and what a drag changed.
  • Fixed (seen in game): after closing the editor, nothing could be typed in F8. Cancelling with Backspace left cursor mode while the key was still down, so FiveM's console kept Backspace held and erased every letter. Confirm and cancel now trigger when the key is released.
  • 0.2.4 (holding the commands over a few frames) is replaced: the commands never reached the gizmo.

0.2.4 — 2026-10-19

  • Fixed (seen in game, the 0.2.3 fix did not help): R still did not switch back from rotate to move mode. The real cause: the gizmo only reacts to a mode command that stays down across a frame, and the editor sent the command down and up in the same frame, so the gizmo never saw it. The rotate mode you saw came from qbx_properties' own R mapping. The editor now holds each command down for a few frames. The same fix applies to Q (world / local axes), which never worked either, and to the editor always starting in move mode.

0.2.3 — 2026-10-19

  • Fixed (seen in game): after switching to rotate mode, R did not switch back to move mode. qbx_properties maps R to the same gizmo command (+gizmoRotation) for its decorating, and its mapping won over ours. R now toggles when it is released and the chosen mode is applied again for a few frames, so the mode of the editor is always the last one set.

0.2.2 — 2026-10-19

  • Fixed (seen in game): moving your character in live mode broke the animation it was playing and left it in a T-pose; only an emote started after placing played correctly. Every move cleared the ped's tasks (SetEntityCoordsNoOffset with keepTasks = false). Moves now keep the tasks: the live drag, the ghost drag, placing, adjusting and the return to the start.
  • Leaving a pose no longer stops the animation as a side effect of the teleport: the emote keeps playing at the start until its menu cancels it (as documented for live poses).

0.2.1 — 2026-10-19

First in-game feedback.

  • Fixed: cancelling your emote did not take you back to where you started. In a library / scully pose, playing another emote even ended the pose silently (it counted as "another script took over"), so leaving that emote later left you on the spot.
  • Now, in both modes: playing another emote keeps the pose and the position. When no animation plays any more for Config.Pose.animEndGrace (1 s, switching emotes takes less), you go back to the start like a normal exit. The script reads "some animation plays" without knowing which one: any scripted animation, synchronised scene, scenario, or scully's own emote state.
  • A live pose placed while standing still only ends on its own after an animation has played there.
  • New config: Config.Pose.returnOnAnimEnd (default true), Config.Pose.animEndGrace (default 1000).

0.2.0 — 2026-10-19

Not yet tested in game.

  • New: live mode. /animpos (no scully emote detected) puts the gizmo on your own character, in whatever animation it plays from any emote menu (rpemotes, dpemotes, server-specific, streamed animations) or with none. You see the real result while you move. Every move is checked first: at a wall, door or the limit the character stops at the last allowed point. Enter asks the server; a refused spot puts you back at once.
  • Live poses keep only the position: playing another emote there does not end the pose, and leaving it returns you to the start without stopping your animation (the emote menu stays in charge of it).
  • /animpos list opens the pose picker (Config.PickerArgument); the picker has a "Position my character" button. Config.Live.enabled = false brings back the old behaviour (picker on /animpos).
  • While Enter waits for the server in live mode, the character cannot be moved.

0.1.0 — 2026-10-19

First version. Not yet tested in game.

  • Ghost editor: a see-through copy of your character plays the pose; FiveM's built-in 3D gizmo moves it (X / Y / Z arrows and planes) and R switches to the rotation rings. Q world / local axes, arrow keys and PgUp / PgDn nudge relative to the camera (Shift = fine), G snaps to the ground, Z back to the start.
  • Orbit camera around the ghost (right mouse held, wheel zoom); limit circle, line and ring markers that turn red when the spot is not allowed; HUD with mode, distance bar, height, heading and every key.
  • Live client checks: distance, height, walls and windows, closed doors (door system or door / gate models), same interior. Enter always checks again, so a stale result never confirms.
  • Server sessions with a state machine (placing → posed → ended, posed ↔ placing for adjusting): start recorded from the server ped, distance / height limits with sync tolerance, blocked zones, vehicle / dead / last stand / cuffed / moving refused, custom restriction hook, placing timeout, ped-moved-away check.
  • Adjust a pose with /animpos again; the limit is still measured from the first start (no chaining).
  • Leaving a pose (X, rebindable, or moving) returns you to the server-recorded start. Interruptions (dead, cuffed, ragdoll, attached, damage, animation replaced) only unfreeze the ped.
  • scully_emotemenu: /animpos while an emote is playing places that emote.
  • Pose picker with 54 base-game poses, search, categories, favourites; /animpos <id>; per-pose ACE.
  • /animposzones admin tool: shows the blocked zones and prints your position.
  • Exports: client IsPosing, IsPlacing, Open, Stop; server IsPosing, ForceEnd. Player statebag ns_animpos (server-written, client writes are flagged and reverted).
  • English and Turkish. No database.

Cart

Your cart is empty.