mri-QboxResourcesScully Emotemenu

💃 Scully Emote Menu - Manual de Funcionalidades

Menu de emotes abrangente e rico em funcionalidades para FiveM com suporte a props, animações sincronizadas, efeitos de partículas e integração com frameworks.

Versão: 1.9.9f | Framework: Todos | Licença: MIT


🎯 O que o Scully Emote Menu faz

O Scully Emote Menu é um sistema completo de animações para FiveM que oferece mais de 500+ emotes, incluindo danças, ações, expressões faciais e estilos de caminhada. Suporta emotes com props (objetos), emotes sincronizados entre jogadores, efeitos de partículas (PTFX) e persistência de configurações.


⚙️ Como funciona

O sistema gerencia animações através de:

  • Cliente: Execução de animações, controle de props, sincronização com outros jogadores
  • Servidor: Gerenciamento de emotes sincronizados, validações
  • Configuração: config.lua e arquivos em data/ para definições de emotes

As animações são categorizadas e podem ser acessadas via menu NUI, comandos ou binds de teclas.


🔧 Configuração

Edite config.lua:

Config = {
    EnableEmoteBinds = true,           -- Sistema de teclas de atalho
    EnableNSFWEmotes = false,          -- Habilitar emotes NSFW (18+)
    EnableGangEmotes = true,           -- Emotes de gang
    EnableSocialMovement = true,       -- Movimentos sociais (LGBTQ/BLM)
    EnableAutoPtfx = false,            -- Reproduzir efeitos automaticamente
    HidePedMenu = false,               -- Ocultar menu de ped
    
    EmoteMenuCommand = 'emotes',       -- Comando para abrir menu
    
    -- Teclas de atalho (configuráveis nas settings do jogo)
    Emote1 = 'F1',
    Emote2 = 'F2',
    Emote3 = 'F3',
    Emote4 = 'F4',
    Emote5 = 'F5',
    Emote6 = 'F6',
    Emote7 = 'F7',
    Emote8 = 'F8',
    Emote9 = 'F9',
    Emote10 = 'F10',
    
    -- Configurações de props
    PropExtractor = false,             -- Gerar lista para anti-cheat
    
    -- Filtros
    BlacklistedEmotes = {},            -- Emotes bloqueados
    WhitelistedPeds = {}               -- Peds permitidos
}

Tipos de Emote em data/

ChaveDescrição
NSFW = trueOculto do menu (18+)
Gang = trueOculto (relacionado a gangs)
SocialMovement = trueOculto (movimentos sociais)
Hide = trueSempre oculto (apenas comando/export)
BlockBinding = trueImpede vinculação a teclas
PedTypesRestrição a tipos de ped
Placement = trueSeleção de posicionamento
SkipRequest = truePula solicitação em emotes compartilhados
Auto = trueReproduz efeitos automaticamente

📤 Exports

Exports do Cliente

ExportDescriçãoParâmetros
toggleMenuAlterna menu de emotesNone
closeMenuFecha menuNone
getCurrentExpressionObtém expressão atualNone
setExpressionDefine expressãoexpressionName (string)
resetExpressionReseta expressãoNone
getCurrentWalkObtém estilo de caminhadaNone
setWalkDefine estilo de caminhadawalkName (string)
resetWalkReseta caminhadaNone
isInEmoteVerifica se está em animaçãoNone
getLastEmoteObtém último emoteNone
registerEmoteRegistra emote customizadoemoteData (table)
playRegisteredEmoteReproduz emote registradoemoteName (string)
playEmoteReproduz emote diretamenteemoteData (table), variant (int)
playEmoteByCommandReproduz por comandocommand (string), variant (int)
cancelEmotePara animação atualNone
isLimitedVerifica se limitadoNone
setLimitationAlterna limitaçõeslimited (boolean)
listEmotesLista emotes por categoriaemoteType (string)

📡 Eventos

Eventos do Cliente

EventoDescriçãoParâmetros
scully_emotemenu:toggleMenuAlterna menuNone
scully_emotemenu:closeMenuFecha menuNone
scully_emotemenu:setExpressionDefine expressãoexpressionName (string)
scully_emotemenu:resetExpressionReseta expressãoNone
scully_emotemenu:setWalkDefine caminhadawalkName (string)
scully_emotemenu:resetWalkReseta caminhadaNone
scully_emotemenu:registerEmoteRegistra emoteemoteData (table)
scully_emotemenu:playRegisteredEmoteReproduz emoteemoteName (string)
scully_emotemenu:playReproduz emoteemoteData (table), variant
scully_emotemenu:playByCommandReproduz por comandocommand (string), variant
scully_emotemenu:cancelAnimationCancela animaçãoNone
scully_emotemenu:toggleLimitationAlterna limitaçãolimited (boolean)

🎮 Comandos

ComandoDescriçãoPermissão
/emotesAbre menu de emotesTodos os Jogadores
/e [emote]Reproduz emote por nomeTodos os Jogadores
/emote [emote]Reproduz emote por nomeTodos os Jogadores

Exemplos de Comandos

/e dance4       -- Executa o emote 'dance4'
/emote sit     -- Executa o emote 'sit'

🔗 Integrações

Frameworks Suportados

  • QBCore - Suporte completo
  • ESX - Suporte completo
  • ox_core - Suporte completo
  • Standalone - Suporte completo

Dependências

  • ox_lib (obrigatório) - UI e utilitários

Integração com Menu Radial

O scully_emotemenu integra com menus radiais para acesso rápido.

Compatibilidade com Eventos QBCore

Suporta eventos do QBCore para controle de animações.


💡 Casos de Uso

Registrar Emote Personalizado (Cliente)

exports['scully_emotemenu']:registerEmote({
    Command = 'dance4',
    Name = 'Dance 4',
    Category = 'Dances',
    Animation = {
        Dict = 'anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity',
        Clip = 'hi_dance_facedj_11_v2_male^5',
        Duration = -1,
        Flags = {
            Loop = true,
            Move = false
        }
    },
    Prop = {
        model = 'prop_glowstick_01',
        bone = 57005,
        position = {x = 0.0, y = 0.0, z = 0.0},
        rotation = {x = 0.0, y = 0.0, z = 0.0}
    }
})

Reproduzir Emote (Cliente)

exports['scully_emotemenu']:playEmote({
    Animation = {
        Dict = 'anim@amb@nightclub@dancers@crowddance_facedj@hi_intensity',
        Clip = 'hi_dance_facedj_11_v2_male^5',
    }
}, 0)

Definir Estilo de Caminhada (Cliente)

exports['scully_emotemenu']:setWalk('move_m@hipster@a')

Verificar se Jogador está em Emote

if exports['scully_emotemenu']:isInEmote() then
    print("O jogador está reproduzindo um emote")
end

Emote Sincronizado

-- Solicitar emote sincronizado com outro jogador
TriggerServerEvent('scully_emotemenu:requestSharedEmote', targetPlayer, 'highfive')

🎪 Emotes com Props

O sistema gerencia automaticamente a limpeza de props:

{
    Command = 'guitar',
    Name = 'Tocar Guitarra',
    Animation = {...},
    Prop = {
        model = 'prop_guitar_01',
        bone = 57005,              -- Mão direita
        position = {x = 0.08, y = -0.03, z = -0.09},
        rotation = {x = 0.0, y = 180.0, z = 90.0}
    }
}

✨ Efeitos de Partículas (PTFX)

{
    Command = 'magic',
    Name = 'Magia',
    Animation = {...},
    Ptfx = {
        asset = 'scr_rcbarry2',
        name = 'scr_rcbarry2_fib_glow',
        offset = {x = 0.0, y = 0.0, z = 0.5},
        rotation = {x = 0.0, y = 0.0, z = 0.0},
        size = 1.0,
        color = {r = 255, g = 0, b = 0}  -- Vermelho
    }
}

🔧 Extrator de Props para Anti-Cheat

Para sistemas anti-cheat, gere uma lista de props:

  1. Defina PropExtractor = true em config.lua
  2. Reinicie o recurso
  3. prop_dump.lua será gerado na pasta do recurso
  4. Adicione esses props à whitelist do seu anti-cheat

⚠️ Solução de Problemas

Emotes não reproduzem

  • Verifique se o ox_lib está rodando
  • Confirme que a animação existe no jogo
  • Olhe o console (F8) para erros de dicionário de animação

Props não aparecem

  • Verifique se o modelo do prop existe
  • Confirme que o bone ID está correto
  • Verifique se o prop não está bloqueado pelo anti-cheat
  • Verifique se o comando /emotes está funcionando
  • Confirme que EmoteMenuCommand está configurado
  • Verifique erros no console do cliente

Emotes sincronizados não funcionam

  • Verifique se o jogador alvo aceitou a solicitação
  • Confirme que ambos os jogadores têm o recurso
  • Verifique se o emote suporta sincronização

Estilo de caminhada não persiste

  • Verifique se o estilo de caminhada existe
  • Confirme que o jogo não reinicia a animação
  • Verifique se não há conflito com outros recursos

Emotes NSFW aparecendo

  • Defina EnableNSFWEmotes = false em config.lua
  • Reinicie o recurso após alterar