Também é possível utilizar categorias custom, assim como personalizar a exibição destas categorias no menu, utilizando o export registerCategory, vide código abaixo!
name
nome da animação, será exibido no menu e também será utilizado no comando /e <nome>.
animationData
dados da animação, no formato abaixo:
exemplo de utilização:
Inserindo animações em duplas
É possível também adicionar animações em dupla no menu, onde é necessário inserir a animação (com mesmo nome) nas categorias couple e couple:sync, vide exemplo abaixo.
-- #### server
Player(source).state:set('animBlocked',true,true)
-- ou
Player(source).state:set('animationsDisabled',true,true)
-- #### client
LocalPlayer.state:set('animBlocked',true)
-- ou
LocalPlayer.state:set('animationsDisabled',true)
-- server
Player(source).state:set('animBlocked',true,true)
-- client
LocalPlayer.state:set('animBlocked',true)
exports['snt-animations']:registerCategory(category, name, icon)
-- category : string : id da categoria conforme utilizado em insertAnimation.
-- name : string : nome da categoria para exibição no menu
-- icon : string : nome da imagem que deve ser um SVG dentro da pasta web/img
-- ex: 'iconName', logo dentro de web/img você deve adicionar iconName.svg
animationData = {
dict = "mp_player_intdrink",
anim = "loop_bottle",
walk = true,
loop = true,
-- opcionais \/
clearBefore = true, -- (limpar a animação atual antes)
prop = "prop_ld_flow_bottle",
bone = 60309,
prop_placement = {0.0,0.0,0.02,0.0,0.0,130.0},
vehicle_allowed = false, -- Se pode ser feita em veículos (true) ou não (false/padrão).
extraProps = { -- props adicionais
{
prop = 'extra_prop',
bone = 60309,
prop_placement = {0.0,0.0,0.0,0.0,0.0,0.0}
}
},
vehicle_allowed = false, -- se pode ser executada em veículos ou não (true | false)
}
client.lua
CreateThread(function()
while type(insertAnimation) ~= 'function' do
Wait(500)
end
Wait(1000)
insertAnimation(
'poses',
'curioso',
{
dict = 'anim@amb@board_room@whiteboard@',
anim = 'curious_01_amy_skater_01',
walk = false,
loop = true
}
)
end)
client.lua
CreateThread(function()
while type(insertAnimation) ~= 'function' do
Wait(500)
end
Wait(1000)
local animationDataP1 = {
dict = 'mp_ped_interaction',
anim = 'kisses_guy_a',
walk = false,
duration = 5000, -- se não houver duração, adicionar loop = true no lugar.
syncOptions = {
syncOffset = { front = 1.05 }
}
}
local animationDataP2 = {
dict = 'mp_ped_interaction',
anim = 'kisses_guy_b',
walk = false,
duration = 5000, -- se não houver duração, adicionar loop = true no lugar.
syncOptions = {
syncOffset = { front = 1.18 }
},
carryTask = false -- se é uma animação de carregar ou não, pra caso um dos dois pare de fazer ela ser forçada de volta (ex ao passar em portas).
}
insertAnimation('couple','abracar',animationDataP1)
insertAnimation('couple:sync','abracar',animationDataP2)
end)
######################################################
## Demais opções da configuração syncOptions, no animation data de animações em duplas:
-- Ajustar a coordenada do ped (front = ajuste frontal, side = ajuste lateral):
syncOffset = { front = 1.0, side = 0.0 },
-- Travar a posição do ped:
freezePos = true,
-- Dar attach no ped 2 no ped 1 (grudar peds/carregar)
attachTo = { bone = 0, xPos = 0.1400, yPos = 0.2500, zPos = 0.0000, xRot = 0.0000, yRot = 0.0000, zRot = 0.0000 },