/rpemotes

Community driven FiveM emote menu with human, animal and prop support.

Primary LanguageLuaGNU General Public License v3.0GPL-3.0

RpEmotes ๐Ÿ‹๏ธ

RpEmotes is a community driven FiveM emote menu allowing players to express themselves in roleplay with custom animations, countless facial expressions, walkstyles and props, inspired by DullPear.

Join Our Official Discord ๐Ÿ’ฌ

sw3NwDq6C8

  • Report Issues โš ๏ธ

  • Report Bugs ๐Ÿชฒ

  • Contribute Code ๐Ÿ› ๏ธ

  • Contribute Translations ๐ŸŒŽ

  • Chat With Our Amazing Community ๐Ÿ—จ๏ธ


Available in ๐ŸŒ

  • Brazilian Portuguese ๐Ÿ‡ง๐Ÿ‡ท

  • Chinese Simplified ๐Ÿ‡จ๐Ÿ‡ณ

  • Chinese Traditional ๐Ÿ‡จ๐Ÿ‡ณ

  • Czech ๐Ÿ‡จ๐Ÿ‡ฟ

  • Danish ๐Ÿ‡ฉ๐Ÿ‡ฐ

  • Dutch ๐Ÿ‡ณ๐Ÿ‡ฑ

  • English ๐Ÿ‡ฌ๐Ÿ‡ง

  • Finnish ๐Ÿ‡ซ๐Ÿ‡ฎ

  • French ๐Ÿ‡ซ๐Ÿ‡ท

  • German ๐Ÿ‡ฉ๐Ÿ‡ช

  • Hungarian ๐Ÿ‡ญ๐Ÿ‡บ

  • Italian ๐Ÿ‡ฎ๐Ÿ‡น

  • Norwegian ๐Ÿ‡ณ๐Ÿ‡ด

  • Persian ๐Ÿ‡ฎ๐Ÿ‡ท

  • Polish ๐Ÿ‡ต๐Ÿ‡ฑ

  • Romanian ๐Ÿ‡ท๐Ÿ‡ด

  • Russian ๐Ÿ‡ท๐Ÿ‡บ

  • Sinhala ๐Ÿ‡ฑ๐Ÿ‡ฐ

  • Spanish ๐Ÿ‡ช๐Ÿ‡ธ

  • Swedish ๐Ÿ‡ธ๐Ÿ‡ช

  • Turkish ๐Ÿ‡น๐Ÿ‡ท

  • Vietnamese ๐Ÿ‡ป๐Ÿ‡ณ

All languages were translated or contributed by you, the community with the odd exception of using Google Translate.

If you happen to find any incorrect translations or would like to add more languages, please feel free to make a pull request with the correct / additional translations or join our discord.

Languages can be selected and / or added in the config.lua.


Features ๐Ÿ› ๏ธ

  • Multiple Translations ๐ŸŒ

  • Search Function ๐Ÿ”Ž

  • Custom Animations with permission from the community ๐Ÿƒ

  • Custom Props with permission from the community ๐Ÿ’™

  • Facial Expressions ๐Ÿคช

  • Animal Emotes ๐Ÿฉ

  • Shared Dances ๐Ÿ•บ๐Ÿ’ƒ

  • Persistent Walkstyles via client KVP ๐Ÿšถโ€โ™‚๏ธ

  • Persisent Moods via client KVP ๐Ÿ˜œ

  • Crouching

  • Crawling

  • Shared Particle Effects ๐Ÿ’จ

  • QB-Core Framework & SQL Keybinding Support โš™๏ธ

  • Further support for shared and couple poses / animations ๐Ÿ‘ซ

  • Easily convert Menyoo to RPEmotes ๐Ÿ”„

  • Hide Adult Emotes ๐Ÿ”ž

  • Hide Animal Emotes โ›”

  • Easy To Understand Configuration File โš™๏ธ

  • Exit Emotes ๐Ÿ˜Ž

  • Standalone exports

  • Props Extractor for anticheat scripts


Exports

exports["rpemotes"]:EmoteCommandStart(emoteName, textureVariation)
exports["rpemotes"]:EmoteCancel(forceCancel) โ€“ forceCancel is optional
exports["rpemotes"]:CanCancelEmote(state)
exports["rpemotes"]:IsPlayerCrouched()
exports["rpemotes"]:IsPlayerProne()
exports["rpemotes"]:IsPlayerCrawling()
exports["rpemotes"]:IsPlayerPointing()
exports["rpemotes"]:IsPlayerInAnim()

Menu Keybind ๐ŸŽ›๏ธ

The keybind uses RegisterKeyMapping. By default the configured keybind in the initial config.lua will be the default key, however once the keybind is set for a user it'll remain and can be changed in the users settings under Esc > settings > keybinds > fivem.

Menu key: F4

Server owners can change this in the config.lua.

Alternatively, the player base can set their own menu keybind to open RpEmotes

Esc > settings > keybinds > fivem

  • More keybinds are now using key mappings which means that they are now available in your FiveM settings to change (FavKeybind and RagdollKeybind)

Keybinds and SQL ๐ŸŽ›๏ธ

To use the SQL features, install the latest version of the oxmysql resource and enable the setting in config.lua

SqlKeybinding = false,

If you do not want to use the SQL features keep the oxmysql region in fxmanifest.lua commented out.

Alternatively, you can use the keybind command that comes with FiveM without having to use SQL, by entering the following into F8:

bind keyboard "Yourbutton" "e youremote". To remove the keybind, type "unbind keyboard "Yourbutton".


Ragdoll ๐Ÿฅด

  • To enable ragdoll, change RagdollEnabled = false, to true in config.lua.

Much like the menu key, RagdollKeybind is also using RegisterKeyMapping. It is currently set to U by default (server side) however can be set to the player's preferred keybind in the FiveM keybinds setting found in the settings menu within the Esc Menu.

  • New setting: RagdollAsToggle, this will make either the ragdoll be a toggle or a hold key

Finger Pointing & Hands Up ๐Ÿ‘†

Once enabled, players can press B on the keyboard to enable standalone finger pointing, and Y to put their hands up, without the need for unnecessary frameworks or "small resources".

Much like everything else in the menu, server owners can change these keybinds to their own preferences.


Crouching & Crawling

Crawling:

Server owners can opt in to either overriding the stealth/action animation when pressing the LEFT CONTROL keybind or have players tap LEFT CONTROL twice to switch from stealth to crouch (when enabled in the config.lua file)

Crouching:

RIGHT CONTROL. Players can move forward, back, left and right as well as turning around. Press SPACEBAR to switch from stomach to back. Pressing RIGHT CONTROL key while running will have the player "dive into" a crouching animation.

Chat Commands

/crouch

/crawl


Moods & Walkstyles ๐Ÿ˜œ๐Ÿšถโ€โ™‚๏ธ

Moods and walkstyles can be set from the menu (/mood, /walk, /emotemenu) or via pressing F4 (default menu key)

These will save to your character and reapply when exiting a vehicle, or loading back into the server as they are saved via client side KVP.

To see a list of walkstyles type /walks

To see a list of moods type /moods


Favorite Emote

Players can search for an emote (so long as search is enabled) and press LEFT SHIFT and CAPLOCKS on their keyboard to add it to their 'Favorites'. Pressing CAPLOCKS will toggle the emote.

Alternatively, you can use the ๐ŸŒŸ Favorite menu to find an emote and press enter.


Exit Emotes

Exit Emotes are used to make cancelling an animation more smoother and dynamic, such as getting up off a chair or throwing a cigarette out instead of dropping it.

You can add your own Exit Emotes under AnimationListCustom.lua's new CustomDP.Exits = {} array.

Below is an example of how this would look:

    },
    ["sit"] = {
        "anim@amb@business@bgen@bgen_no_work@",
        "sit_phone_phoneputdown_idle_nowork",
        "Sit",
        AnimationOptions = {
            EmoteLoop = true,
            ExitEmote = "getup",
            ExitEmoteType = "Exits"
        }
    },

The ExitEmote calls for the 'getup' emote, which is noted as the following:

["getup"] = {
        "get_up@sat_on_floor@to_stand",
        "getup_0",
        "Get Up",
        AnimationOptions = {
            EmoteDuration = 2000
        }
    }
}

Adult Emotes ๐Ÿ”ž

Adult Emotes can be hidden from the menu by setting AdultEmotesDisabled to true in the config.lua file.

This will completely conceal the emotes from the lists (Emotes, Shared Emotes, etc) at startup making them unusable.

The emotes that are concealed, are the ones flagged in the animation list with AdultAnimation. You can see how it is done with fspose.

Alternatively, you can also hide animal emotes.


QB-Core โš™๏ธ

QBCore integration to match their fork of dpemotes

  • Config option which supports the QB Framework in their fork of the original dpemotes.

If youโ€™re using qb-core, you can now set

Framework = "qb-core",

in the config file, otherwise leave it as

Framework = false,

You may need to alter some code within qbcore to work with RPEmotes.


Prop Extractor โฌ‡๏ธ

Many people have expressed concerns over anticheat scripts kicking or banning their community members due to the fact RPEmotes uses props and anticheats detecting said props being spawned.

To make server owners' jobs a little easier, we have added a prop extractor command that you can enter into the server console which will automate a file inside the RPEmotes resource folder appropriately named, .prop_list.lua.

Command:

emoteextract

Available output formats:
1 - 'prop_name',
2 - "prop_name",
3 - prop_name

Command usage example: emoteextract 1


Screenshots ๐Ÿ“ธ


Installation Instructions โš™๏ธ:

Onesync Infinity is required for the particle effects to work as intended This can be done via txadmin or your localhost .bat file.**

For localhost servers, comment out onesync from your server.cfg and add the following to your .bat file:

+set onesync on +set onesync_enableInfinity 1 +set onesync_enableBeyond 1 +set onesync_population true

You can put this before your gamebuild enforcement, aka +set sv_enforceGameBuild XXXX

  • Set the desired language and settings in the config.lua under MenuLanguage = 'en',

  • Qb-Core server owners, set Framework = 'qb-core' in the config file, otherwise leave it as false.

  • To use the SQL features, install the oxmysql resource then open keybinds.lua in RPEmotes. If you do not want to use the SQL features, comment out the oxmysql region in fxmanifest.lua.

Alternatively, you can use the keybind command that comes with FiveM without having the SQL, by entering the following into F8:

bind keyboard "Yourbutton" "e youremote". To remove the keybind, type "unbind keyboard "Yourbutton".

  • Type /refresh and /start rpemotes into your chat resource, or simply restart your server

Additional Instructions โš™๏ธ

  • Check out my youtube playlist below:

Video Preview


Shared emotes ๐Ÿ‘ฉ๐Ÿปโ€โค๏ธโ€๐Ÿ’‹โ€๐Ÿ‘จ๐Ÿผ

Emotes will work with either SyncOffset or Attachto.

  • If it is with SyncOffsetFront or SyncOffsetSide, then the offset used is the one of the emote the player started.
    For example, if player one starts the emote handshake which has SyncOffsetFront, then player one will have the SyncOffsetFront but not the other player.

  • If it is with Attachto, then it'll either be player one's data used for attaching, or the player two's data.
    For example, if player one start the emote carry, then the other player will be attached but not the player one because Attachto is set in carry2 and not carry.

  • If player one starts the emote carry2, then player one will be attached and not the other player. it's the player who start the animation who will in most cases be moved

Special case, if both emote have the Attachto then only the player who started the emote will be attached.

You can find a list of ped bones to attach the other player here: Ped Bones or alternatively if the link is down for some reason, you can check here

Using the websites provided above, enter the bone ID, ie 1356 and not 111, which is the Bone Index.

Understandably, this can be confusing for some people. We suggest using the Attachto approach.


Particle Effects ๐Ÿ’จ

REQUIRES ONESYNC INFINITY

Particle effects can be found using the DurtyFree GTA V Dump. You will need to add the particle assest, name, and placement. Placement is done via XYZ, Pitch, Roll, Yaw, and scale.

Onesync is required for them to work across all clients.

Big thanks to DurtyFree for his amazing work.

PtfxPlacement = {
    -0.15, -- X
    -0.35, -- Y
     0.0, -- Z
     0.0, -- ROTATION X
     90.0, -- ROTATION Y
     180.0, -- ROTATION Z
       1.0 -- SCALE
},

By default, the main prop will share it's coordinates with the particle effect, so just put 0.0 for the particle effects and you will be good to go.

If no prop is used in the animation or you require the particle effect to be in a different location, use PtfxNoProp = true, and 0.0 will 9/10 times be the human peds' stomach; you can then offset your coordinates based on that with the first 3 entries being XYZ, and the last 3 being rotation XYZ.

Alternatively, you can use the PtfxBone = AnimationOption to attach the PTFX to the ped's bone, simiarly to how you attach props.

Using Menyoo, spawn down a tennis ball and attach it to human, by default menyoo will attach it to the SKEL_ROOT bone (stomach), so from that, what we can do is is either offset the coordinates, say, up to the human ped's mouth, or change the bone all together. Once we've got it correct, we can transfer those coordinates over to rpemotes, and tah dah, we have our Ptfx Placement.


Adding Your Own Animations โš™๏ธ

Because the menu gets updated frequently, the files get overwritten. To avoid this, you can add your own / downloaded animation files (.ycd) inside of a newly created folder, give it a name, and place it in the rpemotes\stream\[Custom Emotes] folder.

Add your animation code to the AnimationListCustom.lua and make a backup of this file, call it BackUpAnimationListCustom.lua.

Whenever an update is released, rename BackUpAnimationListCustom.lua to AnimationListCustom.lua, click yes to overwrite, and you're good to go.

It is also a good idea to keep a backup of your config file. Below is an example:


Add-Ons ๐Ÿ› ๏ธ

  • Fixed an issue with the clipboard and added textures to paper (/e clipboard)

  • Changed umbrella texture to black (/e umbrella)


Police Badge ๐Ÿ‘ฎ


๐Ÿ“œ LICENSE & DISCLAIMER

This project is under the GPL V3 license, however all custom props and animations were provided to RPEmotes by the community with express permission and must not be extracted from RpEmotes, reuploaded to any websites, forums or discord servers.

If you want to modify RpEmotes (does not apply if you want to use it for personal purposes) or make an agreement, you can contact the RPEmotes via our official Discord via opening a ticket.

Pull requests are actively reviewed and discussed with TayMcKenzieNZ and the RPEmotes team, and will be accepted as long as they do not contain animation / prop files (we need permission before adding them) breaking changes or suspicious and/or malicious code.

โœ… You are allowed to use the custom animations explicitly provided within this repository only

โœ… You are allowed to use the custom props explicitly provided within this repository only

โœ… You are allowed to add your own custom animations or props to this resource and use it on your server. The entire content must remain on your server and not be reuploaded.

โŒ You are not allowed to re-distribute the custom animations or props provided with this repository either on websites, forums, tebex store, discord or your own scripts / maps.

โŒ You are not allowed to claim the custom animations or props provided within this resource as your own work

โŒ You are not allowed to sell this script or any of the content within it

โŒ You are not to outright copy code from this script into your own without discussing with the RPEmotes team and getting written consent from all parties


Credits ๐Ÿค

All custom animations and props were added with permissions from the creators and does not contain any paid or leaked work.

All animation creators have specifically asked that their content remains free and that the RPEmotes team and community do not try to profit from them, claim them as their own or reupload them anywhere else but TayMcKenzieNZ's GitHub unless express permission has been arranged and granted by their respective creators, therefore you may not extract the animations and props or use them for your own menus unless written permission has been granted to you by the creators.

A huge thank you to the following people for their amazing contributions made to the menu ๐Ÿซถ๐Ÿป :

  • A huge thank you to Kibook for the addition of the Animal Emotes sub menu

  • Thank you to AvaN0x for reformatting and assisting with code, additional features and figuring out shared particle effects

  • Thank you to Tigerle for providing the additional code required to make Shared Emotes work to it's full extent

  • Thank you to SMGMissy for assisting with custom pride flags and how to stream them

  • Thank you to MissSnowie for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord and for the motivational and overal moral support

  • Thank you to GeekGarage for their knowledge, time and dedication, helping to bring new and exciting features to the menu

  • Thank you to Smokey for the Explicit Usage Rights Agreement to add free custom animations either publicly available on on their discord

  • Thank you to BzZzi for the Explicit Usage Rights Agreement to add free donut, croissant and fire torch props

  • Thank you to Natty3d for the Explicit Usage Rights Agreement to add free lollipop props

  • Thank you to northsqrd for adding the search function, Animal Emotes config, mobile phone prop texture variants and general contributions

  • Thank you to crusopaul and Eki for discussing KVP and initializing it to the menu for persistent walkstyles

  • Thank you to Amnilka for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord

  • Thank you to LittleSpoon for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord

  • Thank you to Pupppy for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord

  • Thank you to SapphireMods for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord

  • Thank you to QueenSisters Animations for the Explicit Usage Rights Agreement to add free custom animations either publicly available or on their discord

  • Thank you to Kri's Graphic House for the custom banners

  • Thank you to !MWooM#0597 on discord for the custom banners

  • Thank you to BoringNeptune for the custom dance emotes

  • Thank you to CMG Mods for the custom emotes

  • Thank you to prue้ขœ for being a great friend and providing us with exclusive custom animations

  • Thank you to PataMods for the custom props

  • Thank you to Crowded1337 for the custom Gucci bag. I have removed the Gucci logo to comply with Rockstar Games & TakeTwo Interactive

  • Thanks to EnchantedBrownie for the custom animations

  • Thanks to Copofiscool for adding a toggle to the Favorite Keybinds

  • Thank you to Mads for joining the team as Co-Developer

  • Thank you to iSentrie for additional code, support and joining the RPEmotes project

  • Thank you to Chocoholic Animations for the custom animations

  • Thank you to CrunchyCat for the custom animations

  • Thank you KayKayMods for the custom props

  • Thank you to MonkeyWhisper and Project Sloth for the custom props

  • Thank you to you, the community for being patient, showing love and appreciation, and for providing translations.

You pay a big role in making this script what it is today and we could not do it without you ๐Ÿ™