NullSect
Systems nominal

Docs / Animpos / Installation

Installation — ns-animpos

  1. Put the ns-animpos folder into your resources (e.g. resources/[nullsect]/ns-animpos).

  2. OneSync must be enabled (the server reads the ped position, heading, speed and vehicle itself).

  3. Start it after your framework and ox_lib (and after scully_emotemenu if you use it). Add to server.cfg:

    ensure ns-animpos
    add_ace group.admin ns-animpos.admin allow
    
  4. Restart the server. There is no database and no SQL to import.

Verify

CheckExpected
Server console[ns-animpos:SV] [INFO] ready (framework=qbox, poses=54, core=…)
Play any emote from any menu, then /animposthree arrows appear on your character, the HUD shows the keys
Drag an arrow towards a wallyour character moves and stops at the wall
/animpos listthe pose picker opens on the right, ESC closes it
Pick a posea see-through ghost appears with three arrows
Drag an arrow, press R, drag the blue ringthe ghost moves, then turns
Move the ghost behind a wall or a closed doorthe ring under it turns red, Enter is refused
Enter on a free spotyour character moves into the pose; a second player sees it
Press X or Wyou stand up where you started
While posing, play another emote, then cancel itthe position stays during the emote; after cancelling you are back at the start
/animpos while posingthe ghost appears at the pose for adjusting
In a vehicle / while cuffed/animpos is refused
restart ns-animpos while posingyou are back at the start, not frozen

Emote menu

Any emote menu works through live mode: play the emote, then /animpos. The gizmo moves your character in that animation. Nothing has to be configured.

With scully_emotemenu started, /animpos while a scully emote is playing uses ghost mode instead (Config.EmoteMenu = 'auto'): you preview the emote on a ghost before your character moves. Scenarios (smoking, guitar, ...) are not detected and go to live mode. Config.EmoteMenu = 'none' always uses live mode.

Blocked zones

Add places where animpos must not be used at all (bank vaults, police cells, evidence rooms):

  1. Stand in the middle of the place and type /animposzones (admin). Your position is printed in F8 as vector3(...).

  2. Add a line to Config.BlockedZones:

    { label = 'Pacific vault', coords = vector3(254.0, 225.5, 101.9), radius = 8.0 },
    
  3. Restart the resource and type /animposzones again: the zones are drawn as red spheres. Type it once more to hide them.

For other scripts

SideExport / dataUse
clientexports['ns-animpos']:IsPosing() / IsPlacing()is the player in a pose / placing one
clientexports['ns-animpos']:Open(id?) / Stop()open the picker (or a pose), leave the pose
serverexports['ns-animpos']:IsPosing(src)is the player posing
serverexports['ns-animpos']:ForceEnd(src)end the pose (the player stays where they are), e.g. when cuffing
bothPlayer(src).state.ns_animpostrue while posing (written by the server only)

Police / medical scripts: cuffing, dying, ragdolling or attaching the ped already end the pose without moving it.

Troubleshooting

  • No framework adapter is active → Config.Framework names a framework that is not started.
  • Every spot is red with "Something is in the way" → you are standing inside a prop or wall; step away first. Config.Checks.lineOfSight = false disables the wall check (not recommended).
  • "The ghost is in another room or building" in a big MLO → that MLO uses several interiors; set Config.Checks.sameInterior = false.
  • An emote from the menu is not picked up → it must be a looped animation emote (not a scenario), and Config.EmoteMenu must not be 'none'.

Cart

Your cart is empty.