Sistema de Músicas

Configure o painel de música, a loja de som, os objetos instaláveis nos veículos, os planos de playlists e o uso de JBL portátil.

Pasta do resource
[TS]Spotify
Arquivo de configuração
[TS]Spotify/Config.lua

Antes de instalar

Se você está começando agora, siga esta ordem. Ela evita a maior parte dos erros de ativação, permissão e dependência.

1. Proteção pronta Instale o módulo MTAX:SA, cadastre o IP e coloque sua KEY no Config.lua.
2. Pasta correta Mantenha o resource com o nome esperado: [TS]Spotify.
3. Dependências ligadas Inicie inventário, notificação, blur, banco ou utilitários citados nesta página antes do produto.
4. Debug limpo Reinicie o resource e confira o console. Se aparecer erro, corrija antes de liberar aos jogadores.
Permissão do resource Se o mod precisar de permissão no ACL, adicione o resource ao grupo correto usando o nome exato da pasta. Para este produto, a referência é resource.[TS]Spotify.
Objeto ACL do resource
resource.[TS]Spotify
Este produto usa comunicação externa Libere também function.fetchRemote no ACL do servidor. Sem essa permissão, a validação pode falhar mesmo com a KEY correta.

Abrir guia completo de instalação e ativação

Como ler os códigos nesta página

Config.lua Arquivo principal onde você altera KEY, permissões, comandos, valores, cores, posições e integrações.
Blocos grandes Servem para localizar a parte correta no arquivo. Não cole o bloco inteiro por cima do seu arquivo sem revisar.
Trechos curtos Podem ser comandos, exports ou exemplos de ACL. Copie apenas quando a legenda disser que é para usar.
Capa Sistema de Músicas
Imagem validada na loja oficial da TioSam Scripts.

Primeiros passos

Abra o arquivo [TS]Spotify/Config.lua. Comece pela licença, pelas permissões e pelo idioma. Reinicie o resource depois de salvar.

Proteja sua licençaInforme sua chave em ConfigLicense.license, mas nunca publique o valor em prints, tickets ou documentação.
Licença e idioma
ConfigLicense = {
    license = "SUA KEY"
}

config.traducoes.idiomaSelecionado = "pt-BR"
Use pt-BR, en-US ou es-ES.

Acesso e interface

Opções principais

aclMusicPanel
ACLS autorizadas a abrir o painel de música.
aclSoundStore
ACLS autorizadas a comprar caixas, cornetas e acessórios.
markerColor
Cor RGBA dos markers da loja.
showBlip / blipIcon
Exibe ou oculta o ícone da loja no radar.
interfaceColor
Cor RGB principal do painel.
keyOpenMusic
Tecla de abertura do painel.
Permissões e aparência
config = {
    aclMusicPanel = {'Everyone', 'Console'},
    aclSoundStore = {'Everyone', 'Console'},
    markerColor = {0, 114, 255, 0},
    showBlip = true,
    blipIcon = 63,
    interfaceColor = {239, 72, 5},
    keyOpenMusic = 'F6',
}
CompatibilidadeO bloco config.interface existe para compatibilidade com versões anteriores. Mantenha color e bindOpen coerentes com as opções principais.

Loja e estacionamento

A loja pode ser aberta por markers físicos. Cada estacionamento usa quatro vértices, que formam a área onde o veículo será posicionado para a compra.

Opções da loja

enableStoreMarkers
Cria ou remove as entradas físicas da loja.
markers
Lista de coordenadas X, Y e Z das entradas.
parking
Áreas retangulares de estacionamento, com tamanho e cores.
position
Posição da sala de testes.
dimensionPool
Dimensões disponíveis para separar jogadores simultâneos.
useFadeEffect
Ativa a transição de tela ao entrar e sair.
Entrada física e sala de testes
enableStoreMarkers = true,
markers = {
    {2110.148, 2671.131, 9.838},
    {1638.571, -1525.947, 12.608},
},
position = {1149.235, -1399.834, 1605.5},
dimensionPool = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},

Objetos, áudio e LEDs

Limites configuráveis

defaultObjectOffset
Posição inicial de um objeto ao ser instalado no veículo.
minScale / maxScale
Escala mínima e máxima permitida.
maxDistance / minDistance
Distâncias de propagação do áudio.
vibrationSpeed / vibrationDelay / powerFactor
Resposta visual dos objetos que vibram com a música.
MDPM
IDs dos objetos que acompanham a batida.
leds
Modelos, textura RGB e efeito opcional de pisca-pisca.
LEDs rítmicos
leds = {
    enabled = true,
    models = {1131, 1658},
    textureName = "rgb",
    blinking = {
        enabled = true,
        interval = 500,
        intensity = 0.3,
        targets = {3000},
    },
},
Texturas dos shadersAo cadastrar shaders por modelo, os nomes informados em shaderTextures precisam existir dentro do TXD do objeto.

Produtos, planos e JBL

A tabela products agrupa a loja por categorias. Cada item pode declarar nome, preço, modelo, imagens e descrição. Vibração e shaders são opcionais.

Formato de produto
products = {
    ['Caixas'] = {
        {
            name = 'Nome do produto',
            price = 2500,
            model = 3000,
            image = 'files/images/item.png',
            image2 = 'files/images/item_grande.png',
            description = 'Descrição curta',
            vibrate = true,
        },
    },
}

Planos e JBL

basic.benefits
Limites gratuitos de playlists e músicas por playlist.
premium.value
Preço do plano premium.
premium.duration
Duração do premium em dias.
premium.benefits
Limites ampliados do plano premium.
jbl.freeAccessACLs
ACLS que usam JBL sem premium.

Exports disponíveis

Declaradas no meta.xmlO meta.xml deste resource disponibiliza duas exports server-side para salvar e restaurar objetos de som vinculados ao veículo.
Ler a configuração instalada
local sounds = exports['[TS]Spotify']:getVehicleSounds(vehicle)
Restaurar uma configuração
local sounds = {
    {
        model = 3000,
        itemName = 'Caixa de som',
        offsetElement = {0, -1.5, 0.5, 0, 0, 0},
        scaleElement = 1.0,
    },
}

exports['[TS]Spotify']:setVehicleSounds(vehicle, sounds)
Formato esperadosetVehicleSounds recebe o veículo e uma lista. Cada item precisa de model, offsetElement com posição e rotação, e scaleElement. O campo itemName é recomendado.