[PAID] [ESX/QBCore/Qbox/Standalone] vesper-emotes | Keyboard emote menu: 1,071 animations, synced duo scenes, walk styles & moods

vesper-emotes is the emote menu we built for our own RP server, now available for any server. It’s a small keyboard-driven panel on the side of the screen (RageUI style): no mouse cursor, so players keep walking and looking around while they pick an animation.

F2 opens it, X stops the animation, /e name plays one without the menu.

Content

1,071 animations every entry was checked against a full dump of GTA V’s animation dictionaries before going in
Gestures & reactions 116 — wave, agree, refuse, point, react, taunt, surrender
Interactions 110 — all GTA Online interactions, standing or while walking
Dances 339
With a prop 82 — coffee, smoke, phone, tablet, briefcase, guitar, megaphone, jerrycan, fishing rod, flowers, glowsticks, money rain…
Sitting 76 ways to sit, plus 62 lying / leaning / kneeling / waiting poses
In vehicle 69 — GTA Online gestures behind the wheel, passenger version picked automatically
Jobs & scenarios 96 — police, medic, construction, farm, lab, street
Sport 34 — workout, stretching, yoga, meditation
Duo 37 — handshake, hug, slow dance, give, CPR, barber, carry (shoulder, back, arms), arm wrestling, play fight. The other player always has to accept.
Mature (optional) 50 club dances and base-game mature scenes (25 of them duo). One line removes them completely: Config.Adulte = false
107 walk styles saved per character, seen by everyone
18 moods facial expressions, synced to other players (the base game doesn’t do it)

What makes it different

  • Duo animations placed properly. Most GTA pairs are synced scenes written by Rockstar. The server sends one shared origin and each client plays its side from there, so both players end up exactly where the scene expects them instead of “0.9 m in front”.
  • Place & play. A ghost of your character appears, you move it onto the chair, bed or wall, then confirm. It refuses to go through walls.
  • Favourites, recent list and 6 hotkeys, stored in the database per character.
  • Search by name, by command, or by the usual English name (/e wave, /e sit, /e coffee).
  • Random animation, random dance, or random inside a category. Crouch, point (B, on foot only), ragdoll.
  • It tells you what’s missing. If an animation doesn’t exist in a player’s game build, it’s reported to the server (echecs.json, emotesechecs in the console) and marked as missing in the menu. /emotestest (admin) loads the whole catalogue in game and writes a report.

For the server owner

  • One config file, fully commented (11 sections): title, logo, colours, position, size, sounds, keys, chat command names, categories to hide.
  • ESX, QBCore, Qbox or standalone, detected at start. The framework bridge is open source in bridge/ if you run a custom one.
  • Notifications through ox_lib, ESX, QBCore, qs-interface, or your own function.
  • Restrictions: lock an animation or a whole category to a job, from a given grade.
  • Disable any animation, or add your own in the config without touching the code.
  • Update check: the console and admins are told when a new version is out. It never updates itself.
  • Languages: French and English for the menu, messages and key bindings. :warning: The animation names in the catalogue are in French; English search aliases exist for the common ones (wave, sit, lean, coffee…).

Installation

  1. Drop vesper-emotes in your resources folder.
  2. In server.cfg, after ox_lib, oxmysql and your framework:
ensure vesper-emotes
  1. Set Config.Langue = 'en' in config/config.lua if you want English. The database table is created automatically.

Every key can be changed by players in Settings › Key Bindings › FiveM.

Performance

  • Menu closed: no per-frame loop. Three light timers (1 s, 1 s, 2.5 s) for the duo invitation, character changes and synced moods.
  • Menu open: one per-frame loop that reads the keys (it’s what lets you walk while choosing). It stops as soon as the menu closes.
  • During an animation: one check every 150 ms.
  • The catalogue is sent to the page in the background after the character loads, one category per frame: opening the menu the first time costs nothing.
  • The player’s job (for restrictions) is cached and updated by framework events, never read in a loop.

Get it

Tebex (delivered to your Cfx.re Granted Assets, updates included): https://cedricpoint-developpement.tebex.io/package/7769383

Questions and support on Discord: CedricPoint - Developpement

Code is accessible Partially — config, locales and framework bridge are open (Asset Escrow)
Subscription-based No
Lines (approximately) 7,100
Requirements & dependencies ox_lib, oxmysql, OneSync · framework optional
Support Yes (Discord)
1 Like