NullSect
Systems nominal

Docs / Animpos / Configuration

Configuration — ns-animpos

Everything lives in config.lua (and the pose list in data/animations.lua). Both stay readable with escrow.

General

KeyDefaultMeaning
Config.Framework'auto''auto', 'qbox', 'qbcore', 'esx', 'standalone'
Config.Locale'tr''en' or 'tr' (add locales/<code>.lua for more)
Config.Debugfalsedebug logs; Config.DebugCategories = { session = true } limits them
Config.Command'animpos'the main command
Config.PickerArgument'list'/animpos list opens the pose picker
Config.Live.enabledtrue/animpos with no scully emote: live mode (the gizmo moves your own character, any animation). false: the picker
Config.ZonesCommand'animposzones'admin: show blocked zones, print your position
Config.ExitKey'X'default key to leave a pose. Players rebind it in Settings > Key Bindings > FiveM
Config.EmoteMenu'auto''auto' / 'scully': /animpos places the playing scully emote · 'none': library only
Config.Admin.ace'ns-animpos.admin'ACE for admin tools; useFrameworkAdmin = true also accepts framework admins

Library

KeyDefaultMeaning
Config.Library.enabledtruethe picker and /animpos <id>; false = emote menu only
Config.Library.maxFavourites30favourites per player (saved on their PC)

Limits (checked by the server)

KeyDefaultMeaning
Config.Limits.maxDistance3.0metres, horizontal, from where you started
Config.Limits.maxUp / maxDown1.5 / 1.5metres above / below the start
Config.Limits.tolerance0.25server only: extra metres for position sync drift

Adjusting a pose measures from the first start again. Raising the limits makes wall-climbing easier: keep them small.

Live checks (client)

KeyDefaultMeaning
Config.Checks.lineOfSighttrueno walls, windows or closed doors between you and the ghost
Config.Checks.sameInteriortruethe ghost must be in the same interior as you (or both outside)
Config.Checks.interval100ms between two checks while the ghost moves (Enter always checks again)

Editor

KeyDefaultMeaning
Config.Editor.timeout120seconds to confirm (server enforced)
Config.Editor.ghostAlpha170ghost transparency, 0-255
Config.Editor.nudgeSpeed0.6m/s with the arrow keys / PgUp / PgDn
Config.Editor.rotateSpeed70.0deg/s with ← → in rotate mode
Config.Editor.fineFactor0.2speed factor while Shift is held
Config.Editor.markerstruelimit circle, line and ring under the ghost
Config.Editor.camerasee filedistance, minDistance, maxDistance, zoomStep, pitch, orbitSpeed, fov

Pose

KeyDefaultMeaning
Config.Pose.returnToStarttrueleaving puts you back at the start (server-recorded)
Config.Pose.exitOnMovetrueW / A / S / D / Space leave the pose
Config.Pose.exitOnDamagetruedamage ends the pose (you stay where you are)
Config.Pose.returnOnAnimEndtruewhen your emote is cancelled and nothing plays any more, back to the start
Config.Pose.animEndGrace1000ms without any animation before that (switching emotes takes less)
Config.Pose.watchInterval200ms between two checks of the pose

Restrictions (checked by the server on every request)

KeyDefaultMeaning
Config.Restrictions.inVehicletruerefuse in a vehicle
Config.Restrictions.deadtruerefuse dead / last stand (Qbox / QBCore metadata; ped health otherwise)
Config.Restrictions.cuffedtruerefuse cuffed (Qbox / QBCore ishandcuffed; IsPedCuffed on the client)
Config.Restrictions.maxStartSpeed1.0m/s: you must stand still to start
Config.Restrictions.customnil resultserver function `(src) -> localeKey

Example: block players in jail with your jail script's export:

Config.Restrictions.custom = function(src)
    if exports['my-jail']:IsJailed(src) then return 'err_invalid_state' end
end

Blocked zones

Config.BlockedZones = {
    { label = 'Pacific vault', coords = vector3(254.0, 225.5, 101.9), radius = 8.0 },
}

Spheres. A start or target inside one is refused. /animposzones shows them and prints your position.

Pose library (data/animations.lua)

{ id = 'sit_bench', cat = 'sit', dict = 'timetable@ron@ig_5_p3', name = 'ig_5_p3_base' },
{ id = 'vip_lounge', cat = 'lie', dict = 'anim@amb@nightclub@lazlow@lo_sofa@', name = 'lowsofa_base_laz',
  label = 'VIP lounge', ace = 'ns-animpos.vip' },
FieldMeaning
idunique, letters / digits / underscore (max 32). /animpos <id> starts it
cat'sit', 'lean', 'lie', 'stand', 'other'
dict / nameanimation dictionary and name
flag1 loop (default) or 2 hold the last frame. Other flags are ignored
labelfixed text; without it the locale key anim_<id> is used (add it to both locales)
acepermission needed (add_ace group.vip ns-animpos.vip allow); admins always pass

Invalid or duplicate entries are skipped with a warning in the console.

Cart

Your cart is empty.