Tuning de Veículos no Contexto do Roleplay
A personalização de veículos é um dos recursos mais populares em qualquer servidor de RPG FiveM. Os jogadores investem muito tempo e dinheiro em seus carros, e uma oficina de tuning lhes dá a capacidade de personalizar seus passeios com atualizações de desempenho, modificações visuais, pinturas personalizadas e peças de reposição. Um sistema de ajuste bem projetado faz mais do que expor os nativos de modificação de veículos integrados ao GTA por meio de um menu. Ele cria todo um ecossistema que inclui oficinas mecânicas operadas por jogadores, estruturas de preços que servem como sumidouros de economia, cronômetros de instalação que criam tempos de espera realistas e um mercado de peças onde os componentes podem ser adquiridos de diferentes fornecedores em diferentes níveis de qualidade. A oficina de tuning torna-se um centro social onde os entusiastas de automóveis se reúnem, os mecânicos constroem a sua reputação e cada veículo modificado conta uma história sobre o gosto e o orçamento do seu proprietário.
Compreendendo os nativos de modificação de veículos GTA
GTA V expõe modificações de veículos por meio de uma série de funções nativas que permitem aplicar atualizações em slots de modificação específicos. Cada veículo tem um conjunto de tipos de mod identificados por índices numéricos: atualizações de motor usam índice 11, freios usam índice 12, transmissão usa índice 13, suspensão usa índice 15 e peças visuais como spoilers, pára-choques e saias usam índices de 0 a 10. O nativo SetVehicleMod aplica uma modificação específica das opções disponíveis para aquele modelo de veículo e tipo de mod. Nem todo veículo suporta todas as categorias de modificação, então você precisa verificar a disponibilidade usando GetNumVehicleMods antes de apresentar as opções ao jogador. Os trabalhos de pintura usam nativos separados como SetVehicleColours para cores primárias e secundárias, SetVehicleExtraColours para cores peroladas e de roda e SetVehicleCustomPrimaryColour para valores RGB personalizados:
-- Mod type indices reference
local ModTypes = {
spoiler = 0,
front_bumper = 1,
rear_bumper = 2,
side_skirt = 3,
exhaust = 4,
frame = 5,
grille = 6,
hood = 7,
fender = 8,
right_fender = 9,
roof = 10,
engine = 11,
brakes = 12,
transmission = 13,
horns = 14,
suspension = 15,
armor = 16,
turbo = 18,
xenon = 22,
front_wheels = 23,
back_wheels = 24,
plate_holder = 25,
vanity_plates = 26,
trim = 27,
ornaments = 28,
dashboard = 29,
dial = 30,
door_speaker = 31,
seats = 32,
steering_wheel = 33,
shifter_leavers = 34,
plaques = 35,
speakers = 36,
trunk = 37,
hydraulics = 38,
engine_block = 39,
air_filter = 40,
struts = 41,
arch_cover = 42,
aerials = 43,
trim2 = 44,
tank = 45,
windows = 46,
livery = 48,
}
function GetAvailableMods(vehicle, modType)
local count = GetNumVehicleMods(vehicle, modType)
local mods = {}
for i = 0, count - 1 do
table.insert(mods, {
index = i,
label = GetModTextLabel(vehicle, modType, i) or ('Option ' .. (i + 1)),
})
end
return mods
endConfiguração da oficina de sintonia
Configure os locais das lojas de ajuste com seus serviços disponíveis, multiplicadores de preços e as categorias de modificação que eles oferecem. Nem toda loja precisa oferecer todos os serviços. Uma alfândega sofisticada em Vinewood pode se especializar em pinturas luxuosas e mods visuais premium com preços mais altos, mas de melhor qualidade. Uma oficina ao nível da rua em South LS pode concentrar-se em peças de desempenho acessíveis e carroçaria básica. Essa diferenciação cria motivos para os jogadores visitarem lojas diferentes e apoia a identidade de cada negócio. Cada loja precisa de um local físico com um ponto de entrada do veículo onde o jogador dirige seu carro, uma posição de câmera para a visualização da modificação e, opcionalmente, um MLO interno para o ambiente da garagem:
Config.TuningShops = {
['benny_motorworks'] = {
label = "Benny's Original Motor Works",
coords = vector3(-205.67, -1312.58, 31.30),
vehicleSpot = vector4(-211.89, -1320.88, 31.09, 178.94),
camOffset = vector3(0.0, 5.5, 1.5),
blipSprite = 72,
categories = {'performance', 'visual', 'paint', 'wheels', 'lights', 'livery'},
priceMultiplier = 1.0,
restrictedTo = nil, -- Open to all
},
['ls_customs'] = {
label = 'LS Customs - Burton',
coords = vector3(-347.55, -133.00, 39.01),
vehicleSpot = vector4(-339.20, -136.73, 39.01, 116.89),
camOffset = vector3(0.0, 5.0, 1.5),
blipSprite = 72,
categories = {'performance', 'visual', 'paint', 'wheels'},
priceMultiplier = 0.85,
restrictedTo = nil,
},
}
Config.ModPrices = {
engine = {1500, 3500, 6000, 10000}, -- Level 1-4
brakes = {1000, 2500, 4500, 7500},
transmission = {1200, 3000, 5500, 9000},
turbo = {15000},
suspension = {800, 1500, 2500, 4000},
armor = {2500, 5000, 10000, 17500, 25000},
spoiler = 2000, -- Flat price per option
front_bumper = 1800,
rear_bumper = 1500,
side_skirt = 1200,
exhaust = 1000,
hood = 2500,
roof = 1500,
paint_standard = 500,
paint_metallic = 1500,
paint_custom_rgb = 5000,
wheels = 3000,
xenon = 3000,
livery = 2500,
}Sistema de visualização de veículos em tempo real
Os jogadores precisam ver as modificações em seus veículos antes de se comprometerem com a compra. Implemente um sistema de visualização ao vivo que aplique temporariamente modificações selecionadas ao veículo enquanto o jogador navega pelas opções e, em seguida, reverta todas as alterações se o jogador cancelar ou aplicar apenas as modificações compradas. Quando o jogador entra no menu de ajuste, armazene as propriedades atuais do veículo como um instantâneo. À medida que eles navegam pelas diferentes opções, aplique cada modificação temporariamente usando os mods nativos do veículo para que a alteração fique imediatamente visível. Se o jogador selecionar uma opção diferente na mesma categoria, reverta o mod temporário anterior antes de aplicar o novo. Quando o jogador confirma uma compra, a modificação se torna permanente e é salva no registro do banco de dados do veículo. Se eles cancelarem, restaure o veículo para o estado de instantâneo salvo. Posicione a câmera do jogo para orbitar ao redor do veículo durante a pré-visualização, permitindo ao jogador girar a visão e inspecionar as modificações de todos os ângulos:
local originalMods = {}
function SaveVehicleSnapshot(vehicle)
originalMods = QBCore.Functions.GetVehicleProperties(vehicle)
end
function PreviewMod(vehicle, modType, modIndex)
SetVehicleMod(vehicle, modType, modIndex, false)
end
function RevertToSnapshot(vehicle)
if originalMods then
QBCore.Functions.SetVehicleProperties(vehicle, originalMods)
end
end
function SetupTuningCamera(vehicle, shopConfig)
local coords = GetEntityCoords(vehicle)
local camCoords = coords + shopConfig.camOffset
tuningCam = CreateCam('DEFAULT_SCRIPTED_CAMERA', true)
SetCamCoord(tuningCam, camCoords.x, camCoords.y, camCoords.z)
PointCamAtEntity(tuningCam, vehicle, 0.0, 0.0, 0.0, true)
SetCamActive(tuningCam, true)
RenderScriptCams(true, true, 1000, true, false)
endIntegração de Trabalho Mecânico
Transforme a loja de tuning de um menu automatizado em um negócio voltado para o jogador, integrando-o a um sistema de trabalho mecânico. Os mecânicos de plantão podem realizar modificações nos veículos para os clientes, criando uma interação de roleplay orientada ao serviço. Quando um cliente traz seu veículo para a loja, ele pode usar o quiosque de autoatendimento por um preço mais alto ou solicitar um mecânico com desconto. O mecânico vê as solicitações de serviço recebidas na interface do tablet, aceita o trabalho, discute as modificações desejadas com o cliente e executa o trabalho. Durante a instalação, reproduza animações e efeitos de partículas apropriados para simular o mecânico trabalhando no veículo. Adicione temporizadores de instalação que variam de acordo com a complexidade da modificação, com trocas de motor demorando vários minutos e trabalhos de pintura demorando menos. Os mecânicos ganham uma comissão por cada trabalho concluído, motivando-os a prestar um bom serviço e construir uma base de clientes. Acompanhe estatísticas mecânicas, como total de trabalhos concluídos, índices de satisfação do cliente e áreas de especialização para criar um sistema de progressão na carreira mecânica.
Sistema personalizado de pintura e envoltório
Vá além da paleta de cores padrão do GTA implementando um sistema de pintura personalizado com seletores de cores RGB, acabamentos metálicos e foscos, sobreposições peroladas e envoltórios personalizados. O seletor de cores NUI deve exibir uma roda de cores de espectro completo ou controle deslizante HSL que permite aos jogadores selecionar qualquer cor imaginável. Aplique a cor selecionada usando SetVehicleCustomPrimaryColour e SetVehicleCustomSecondaryColour com os valores RGB do seletor. Para efeitos envolventes, use o sistema de pintura do veículo combinado com a substituição de textura personalizada para aplicar padrões, texturas de fibra de carbono ou designs de marca à carroceria do veículo. Oferece uma opção de pintura em dois tons, onde os painéis primários e secundários da carroceria podem ter cores diferentes, criando combinações de cores distintas. Salve os valores RGB exatos no registro do banco de dados do veículo para que as cores personalizadas persistam durante as sessões e reinicializações do servidor. Preço das pinturas personalizadas mais alto do que as cores padrão para refletir a natureza premium do serviço e fornecer uma economia eficaz de dinheiro.
Ajuste de desempenho e teste Dyno
As modificações de desempenho merecem mais profundidade do que simplesmente selecionar uma opção de menu e obter resultados instantâneos. Implemente um recurso de teste dinâmico onde os jogadores podem testar as estatísticas de desempenho de seus veículos antes e depois das modificações. O teste dinamômetro simula o veículo funcionando a todo vapor e exibe métricas como potência estimada, torque, velocidade máxima e tempo de aceleração. Use os dados de manuseio do veículo do jogo para calcular esses valores com base nas modificações instaladas. Exiba os resultados em um painel NUI limpo que compara valores antes e depois com gráficos de barras ou leituras numéricas. Isto dá aos jogadores um feedback concreto sobre como cada atualização afeta o desempenho do seu veículo, tornando a decisão de compra mais informada e satisfatória. Para uma camada adicional de realismo, implemente um chip de ajuste ou sistema de remapeamento de ECU onde os jogadores podem ajustar parâmetros como resposta do acelerador, relações de marcha e equilíbrio de freio por meio de uma interface deslizante, com mudanças refletidas nas características reais de manuseio do veículo usando nativos SetVehicleHandlingFloat.
Salvando e Persistindo Modificações do Veículo
Cada modificação aplicada ao veículo de um jogador deve ser salva no banco de dados para que persista entre as sessões. A maioria das estruturas FiveM armazena propriedades de veículos como um blob JSON na tabela de veículos do jogador. Quando uma modificação for aplicada e paga, atualize as propriedades armazenadas do veículo com os novos valores do mod. Quando o veículo for gerado na garagem, aplique todas as modificações salvas usando a função SetVehicleProperties da estrutura. Lide com casos extremos, como salvamentos parciais, em que o servidor trava durante uma sessão de modificação, o que pode deixar o veículo em um estado inconsistente. Use um padrão de transação onde o pagamento é processado e a modificação é salva em uma única operação atômica do banco de dados. Se alguma das etapas falhar, reverta ambas para evitar que o jogador seja cobrado sem receber o mod ou receba uma modificação gratuita. Registre todas as modificações com carimbos de data e hora e preços para revisão do administrador e para oferecer suporte a possíveis reversões se explorações forem descobertas.
Modificações ilegais e corridas de rua
Adicione uma camada de jogabilidade criminosa implementando modificações ilegais que só estão disponíveis em lojas de tuning clandestinas. A injeção de óxido nitroso fornece um aumento temporário de velocidade que pode superaquecer e danificar o motor se usado excessivamente. As trocas de motores que excedem o limite legal de potência tornam o veículo sujeito a inspeção policial e apreensão, caso seja pego. Placas removidas, janelas escurecidas além da porcentagem legal de tonalidade e modificações na suspensão hidráulica dão à polícia uma causa provável para uma parada no trânsito. Rastreie quais modificações em um veículo são classificadas como ilegais e exponha essas informações à polícia por meio de um mecânico de inspeção veicular. Os policiais podem usar um scanner portátil para verificar o status de modificação de um veículo, revelando peças ilegais que justificam uma citação ou apreensão. Isso cria uma dinâmica de gato e rato entre a cultura do sintonizador e a aplicação da lei que enriquece o ecossistema de roleplay do servidor.
