Skip to content

Anim ​

Menu de animações com busca, favoritos, recentes, mais usadas e atalhos. Tem prévia no personagem, posicionar antes de tocar, animações em dupla e +18 com consentimento, música das danças para quem está perto, efeitos, jeito de andar, expressões e rastejar. Danças e animações extras entram por módulos.

Precisa de: ox_lib, oxmysql, krs_helper

Opcionais: kay_animshop (animações VIP pagas) e animals (animações do pet).

Instalação ​

Deixe as pastas assim:

[anim]/
  anim/
  [modules]/
    anim_krs/
cfg
ensure [modules]
ensure anim

Coloque os dois depois do krs_helper, com os módulos antes do anim. As tabelas são criadas sozinhas. Veja a ordem completa.

Sem kay_animshop, todas as animações ficam liberadas e a categoria VIP não aparece no menu. As animações dela continuam tocando por /e.

Como usar ​

TeclaO que faz
F4Abre o menu
Alt esquerdoSolta o mouse do menu para andar
GSolta o efeito da animação atual
Ctrl direitoRastejar
Shift + teclado numéricoToca o atalho salvo naquele número
Page Up e Page DownVelocidade da animação +18

Cada jogador pode trocar as teclas em Configurações > Teclas > FiveM.

ComandoO que faz
/emote <nome>Toca uma animação
/e <nome>Atalho do /emote. /e c cancela
/animposAjuste fino da posição da animação atual
/limparfavoritosApaga favoritos e atalhos do personagem
/x <1 a 27>Pede uma posição +18 ao parceiro
/sincar <nome>Alinha uma animação em dupla. Só para a equipe

Se outro script já registrou o /e, o anim não cria o atalho e o /emote continua valendo.

Animações em dupla e +18 sempre pedem o aceite do parceiro.

Módulos ​

Um módulo é um resource separado que acrescenta animações ao catálogo. O anim procura ao iniciar qualquer resource que tenha a linha anim_module no manifest.

O anim_krs é o módulo de danças, com música e efeitos.

Instalar um módulo ​

  1. Solte a pasta do módulo em [modules].
  2. Confira se ensure [modules] vem antes de ensure anim.
  3. Reinicie o servidor.

Para atualizar, troque só a pasta do módulo. Atualizar o anim não mexe nos módulos. Para remover, apague a pasta e reinicie: as animações saem do menu.

Criar um módulo ​

lua
-- fxmanifest.lua
fx_version "cerulean"
game "gta5"
lua54 "yes"

anim_module "config/anim.lua"

files {
	"config/anim.lua",
	"music/*.mp3"
}

escrow_ignore {
	"config/anim.lua"
}

O arquivo indicado precisa estar em files, porque o cliente também o lê. Se você usa escrow, ele precisa ficar em escrow_ignore.

O arquivo roda antes de o catálogo ser montado e acrescenta animações às tabelas de Config:

lua
-- config/anim.lua
Config.Emotes["acenar2"] = { "meu@dict", "meu_clipe", "Acenar 2" }

Config.KrsDances = {
	["minhadanca"] = { "meu@dict", "minha_danca", "Minha dança", animationOptions = {
		musicURL = "nui://meu_modulo/music/minha_danca.mp3",
		onlyOnFoot = true,
		emoteLoop = true
	} }
}
TabelaCategoria no menu
Config.EmotesGestos. Com música, vai para VIP
Config.DancesDanças. Com música, vai para VIP
Config.KrsDancesKRS
Config.Custom.VipVIP

A primeira posição da entrada é o dicionário, a segunda é o clipe e a terceira é o nome no menu. O nome da chave é o que o jogador digita no /e.

A música precisa estar na pasta music/ do módulo, com o endereço nui://nome_do_modulo/music/arquivo.mp3. O nome do arquivo aceita letras, números, _ e -.

Permissão ​

Testes, Lixeira, /sincar e a varredura exigem o grupo de Config.DevGroup, que por padrão é Admin.

FrameworkComo liberar
krs, CreativeGrupo Admin do framework
vRPGrupos god, admin ou mod
QBCoreadd_principal identifier.license:SUA_LICENSE group.admin e add_ace group.admin admin allow
Sem frameworkadd_principal identifier.license:SUA_LICENSE group.admin e add_ace group.admin group.Admin allow

Lixeira ​

A equipe tira uma animação do menu de todo mundo sem apagar arquivo.

  1. Abra o menu e passe o mouse no card.
  2. Clique na lixeira. A animação some do menu e do /e para os jogadores.
  3. Na categoria Lixeira, use Restaurar ou Excluir permanente.

Excluir permanente só marca a animação para sair na próxima limpeza dos arquivos. Até lá ainda dá para restaurar.

O botão Varrer testa as animações listadas numa cópia do seu personagem e manda para a lixeira as que não funcionam.

Configuração ​

Tudo fica em config.lua. Ele só precisa ter o que você mudou. Ao iniciar, o console avisa opção nova, nome errado e tipo errado.

OpçãoPadrãoO que muda
Brand"Kroma"Marca no topo do menu
Color"#d8b86b"Cor de destaque
DevGroup"Admin"Grupo da equipe
KeysF4, RCONTROL, G, LMENUTeclas padrão de Menu, Crawl, Effect e Mouse
CloseMenuKeysEscape, F4Teclas que fecham o menu, com o nome do navegador
Commands.Emote"e"Atalho do /emote
Commands.Place"animpos"Nome do /animpos
Commands.ClearFavorites"limparfavoritos"Nome do /limparfavoritos
Cooldown2000Espera entre animações por comando e atalho, em ms. O clique no menu troca na hora
ArmedAllowedtruefalse obriga a guardar a arma
CrawltrueLiga o rastejar
NoInteriorsentar = trueAnimações proibidas dentro de casas e prédios
AnimationsBlacklistedInVehiclesvazioAnimações proibidas dentro de veículo
NoDrive"vehcar"Trecho do nome das animações de carro que puxam o freio de mão enquanto o motorista toca

Posicionar e ajuste fino:

OpçãoPadrãoO que muda
Place.Distance20.0Distância máxima para posicionar, em metros
Place.MaxHeight2.0Altura máxima, em metros
Place.WalkTimeout20000Tempo para andar até o ponto, em ms
AnimPos.Step0.1Passo por toque
AnimPos.Turn2.0Giro por toque
AnimPos.Pitch2.0Inclinação por toque
AnimPos.MaxDistance5.0Distância máxima do personagem. O servidor confere

Duplas e +18:

OpçãoPadrãoO que muda
Pair.Distance2.5Distância para achar o parceiro
Pair.ServerDistance3.0Distância que o servidor aceita
Pair.SelectTimeout30000Tempo para escolher o parceiro, em ms
Pair.RequestTimeout10000Tempo para responder ao pedido, em ms
Pair.RefuseCooldown30Espera depois de uma recusa, em segundos
Adult.EnabledtrueLiga o +18
Adult.Command"x"Nome do comando
Adult.Distance1.5Distância do parceiro, em metros
Adult.SpeedUp"PAGEUP"Tecla para acelerar
Adult.SpeedDown"PAGEDOWN"Tecla para desacelerar

Música e efeitos:

OpçãoPadrãoO que muda
Music.EnabledtrueLiga a música das danças
Music.MaxDistance5.0Distância em que se ouve, em metros
Music.MaxDuration180Duração máxima, em segundos
Music.Scope150.0Alcance do aviso aos outros jogadores, em metros
Relay.Scope100.0Alcance do repasse de efeitos e pose, em metros
Relay.PtfxPerSecond4Limite de efeitos por segundo, por jogador
Relay.PosePerSecond2Limite de poses por segundo, por jogador

Menu e prévia:

OpçãoPadrãoO que muda
BasePreview.EnabledtrueFantasma do personagem ao passar o mouse
BasePreview.Distance2.5Distância do fantasma
MenuCamera.EnabledtrueCâmera do menu
MenuCamera.Fov40.0Zoom
MenuCamera.Distance3.6Distância
MenuCamera.Angle25.0Giro em volta do personagem, em graus
MenuCamera.Height0.3Altura, em metros
DefaultSettingsver config.luaAjustes iniciais de cada jogador: lado do menu, volume, GIFs, repetição e música

Os textos ficam em locales/*.json. As animações não ficam na config.

Para programadores ​

lua
-- cliente: toca uma animação, sem cooldown
TriggerEvent("emotes", nome)

-- servidor: o mesmo para um jogador
TriggerClientEvent("emotes", source, nome)

-- cliente
exports.anim:BaseDestroy()                                 -- cancela a animação atual
exports.anim:Details({ nome1, nome2 })                     -- { [nome] = { Music, Effect, Prop, Moving, Loop } }
exports.anim:Showcase(nome, ms)                            -- prévia da loja, padrão 20000 ms
exports.anim:Dupla(nome, "requester", ped, outroPed)       -- toca a metade de uma dupla nos peds dados

Estado: Player(source).state.Anim tem o nome da animação atual ou false. GlobalState.AnimTop tem as mais usadas.

Problemas comuns ​

[anim] módulo <nome> não carregou: <erro>: o arquivo do anim_module não foi encontrado ou tem erro de Lua. Confira o caminho no manifest e se o arquivo está em files.

O módulo não aparece no menu: confira se ensure [modules] vem antes de ensure anim e reinicie o servidor.