Concessionária
Quatro lojas de veículos com prévia 3D, test drive, pintura, placa, cupom, troca e financiamento. Cada loja pode ter um dono, que cuida do estoque, da equipe e do caixa pelo tablet. O catálogo muda por temporada, e carros usados aparecem à venda pela cidade.
Precisa de: krs
O script também chama os resources bank, garages, target, hud e phone. O Mercado do menu de pausa vem do resource pause.
Instalação
ensure pdmColoque depois do krs, do bank, do garages e do target. As tabelas são criadas sozinhas. Veja a ordem completa.
Os veículos à venda vêm do cadastro do krs. A loja mostra os modelos de modo Cars, Bikes e Rental das classes em Classes.
Como comprar
Use Abrir no target da loja, ou Ver na vitrine em um carro exposto. Dentro do menu, o jogador escolhe modelo, cor e placa.
| Recurso | Como funciona |
|---|---|
| Test drive | Sai com o veículo e volta para a loja ao descer |
| Pintura | Conforme o VIP em Vip.Tiers |
| Placa | 8 letras ou números. Custa Plate.Gems diamantes. O VIP Ouro tem uma grátis a cada Plate.FreeDays dias |
| Cupom | Desconto de 1% a 90%. Não soma com troca |
| Troca | Dá um carro da garagem como parte do pagamento: 70% do preço com VIP, 50% sem. Não soma com cupom nem financiamento |
| Financiamento | Entrada e parcelas pelo bank. O carro fica bloqueado até quitar e é tomado se o contrato for à inadimplência |
| Aluguel | Modelos de modo Rental, pagos em diamantes, por Rental.Days dias, com desconto de VIP |
Fora do aluguel, jogador com impostos ou multas em aberto no banco não compra. Sem VIP, a compra também gera um imposto no bank. O primeiro IPVA vence em 7 dias.
Temporadas
A cada Season.Days dias, os modelos rotativos são divididos em Season.Groups grupos e um grupo sai de linha. As classes de Season.Fixed não giram. Nos primeiros Season.PreSaleDays dias, os modelos que voltam ficam só para o VIP Ouro. Carros fora de linha continuam no Mercado do menu de pausa.
Usados de rua
Quando a temporada vira, até Used.Season.Models modelos que saíram de linha aparecem como usados em pontos de Used.Spots, com preço e estado sorteados. Use Ver anúncio no target. O jogador sai dirigindo ou manda levar para a garagem. Os anúncios mudam de ponto a cada Used.Move segundos.
Comprar uma loja
Use Comprar a concessionária no target da loja. O valor de Price sai do banco. A loja começa sem estoque. Depois, abra o app Concessionária no tablet.
| Cargo | Gerencia | Vende | Dirige a cegonha | Salário padrão |
|---|---|---|---|---|
| Dono | Sim | Sim | Sim | |
Gerente | Sim | Sim | Sim | 4000 |
Vendedor | Não | Sim | Não | 2500 |
Motorista | Não | Não | Sim | 2500 |
- O dono define a margem, de
-15%a+15%com o valor padrão deMarkupLimit. - O estoque é pedido a 70% do preço (
Wholesale) e buscado de cegonha. Cada viagem leva atéDelivery.Capacityunidades. - O vendedor recebe
Commissionda venda que fecha pelo app. Ele também libera test drive para o cliente. - O salário sai do caixa a cada
PayIntervalsegundos. - Vender a loja devolve
SellBackdo preço, mais o caixa.
A loja volta a ficar à venda sem venda por AbandonDays dias. Depois de Grace dias, estoque abaixo de Empty.Ratio gera multa diária de Empty.Fine, que dobra a cada dia. Com Empty.Limit dias nessa situação, o dono perde a loja. Loja sem dono tem estoque automático por faixa de preço.
Permissão
O grupo de Admin.Group, com o nível de Admin.Level, vê a administração no app: tira o dono de uma loja, vira a temporada, cria e apaga cupons e cria e remove usados.
Os benefícios de VIP valem para os grupos Ouro, Prata e Bronze, em serviço.
Configuração
Tudo fica em shared-side/config.lua.
Lojas
Quatro lojas vêm prontas em Shops: pdm, trucks, marina e aero.
| Campo | O que é |
|---|---|
Id | Identificador. Não mude depois de usar, pois o estoque e o dono ficam salvos nele |
Name | Nome da loja |
Coords | Ponto de abertura |
Ped, Heading | Atendente, opcional |
Radius | Raio do ponto |
Spawn | Onde o veículo aparece na prévia |
Daylight | Força o dia na prévia |
Ceiling | Altura livre da prévia |
DriveIn, DriveOut | Início e fim do test drive |
Classes | Classes vendidas |
Display | Vitrine, opcional |
Price | Preço da loja |
Delivery | Ponto de descarga |
Trailer | Reboque da entrega |
Preços: pdm 3500000, trucks 2500000, marina 2000000 e aero 5000000.
Vendas
| Opção | Padrão | O que muda |
|---|---|---|
Rental.Days | 30 | Dias de aluguel |
Rental.Vip | Ouro 0.70, Prata 0.80, Bronze 0.90 | Multiplicador do aluguel |
Taxes | Ipva 0.15, IpvaDays 30, FirstIpva 7, Purchase 0.10 | Valores mostrados na ficha do veículo |
Vip.Order | Ouro, Prata, Bronze | Ordem dos VIPs, do maior ao menor |
Vip.Tiers | por VIP | Label, Paint, Trade, Plate e PreSale |
Palette | 18 cores | Cores da pintura sem cor livre |
Pearls | 16 cores | Perolados |
Plate.Gems | 5000 | Preço da placa, em diamantes |
Plate.FreeDays | 30 | Intervalo da placa grátis |
Exclusive | vazio | Modelo exclusivo de um VIP: ["modelo"] = "Ouro" |
Camera | Ângulo 35.0, FOV 40.0 | Câmera da prévia |
Estoque e temporada
| Opção | Padrão | O que muda |
|---|---|---|
Stock.ByPrice | até 100000: 8; até 500000: 5; acima: 3 | Unidades por faixa de preço |
Stock.RestockDays | 7 | Intervalo de reposição, em dias |
Season.Days | 28 | Duração da temporada, em dias |
Season.Groups | 3 | Grupos da rotação |
Season.PreSaleDays | 7 | Dias de pré-venda |
Season.Fixed | 6 classes | Classes que não giram |
Season.Always | vazio | Modelos que não giram |
Season.Off | vazio | Modelos sempre fora de linha |
Usados
| Opção | Padrão | O que muda |
|---|---|---|
Used.Move | 21600 | Intervalo de troca de ponto, em segundos |
Used.Active | 8 | Anúncios no mapa ao mesmo tempo |
Used.Distance | 120.0 | Distância em que o carro aparece |
Used.Label | 100.0 | Distância em que a etiqueta aparece |
Used.Near | 15.0 | Distância dos detalhes da etiqueta |
Used.Season.Models | 6 | Máximo de modelos por temporada |
Used.Season.Units | 2 | Unidades por modelo |
Used.Season.Discount | 0.75 a 0.95 | Faixa de preço sobre o valor do carro |
Used.Season.Condition | 60 a 95 | Faixa de estado |
Used.Season.Rare | 0.15 | Chance de pintura rara |
Used.Spots | 30 pontos | Coordenadas |
Negócio
| Opção | Padrão | O que muda |
|---|---|---|
Business.Wholesale | 0.70 | Custo do estoque sobre o preço |
Business.MarkupLimit | 15 | Margem máxima, em % |
Business.Commission | 0.05 | Comissão do vendedor |
Business.SellBack | 0.50 | Devolução ao vender a loja |
Business.OnePerPerson | true | Uma loja por pessoa |
Business.AbandonDays | 14 | Dias sem venda até perder a loja |
Business.Grace | 3 | Dias sem multa depois da compra |
Business.MaxEmployees | 8 | Equipe máxima |
Business.PayInterval | 3600 | Intervalo do salário, em segundos |
Business.Roles | tabela acima | Label, Salary, Manage, Sell e Drive |
Business.Empty.Ratio | 0.20 | Estoque mínimo |
Business.Empty.Fine | 25000 | Multa do primeiro dia |
Business.Empty.Limit | 5 | Dias até perder a loja |
Admin.Group | "Admin" | Grupo da administração |
Admin.Level | 1 | Nível exigido |
Delivery.Truck, Delivery.Trailer | coordenadas | Onde a cegonha aparece |
Delivery.Cabs | hauler, phantom | Cavalos |
Delivery.Capacity | 8 | Unidades por viagem |
Delivery.Timeout | 3600 | Tempo máximo da entrega, em segundos |
Delivery.UnloadDistance | 30.0 | Distância do ponto de descarga |
Para programadores
Exports de servidor:
-- multiplicador de aluguel do jogador. 1.0 = sem desconto
exports.pdm:RentalDiscount(charId)
-- { Finance, Listed } do veículo, ou nil
exports.pdm:VehicleState(charId, modelo)
-- true se o modelo saiu de linha
exports.pdm:OffLine(modelo)
-- quita o financiamento
exports.pdm:Payoff(source, charId, modelo)
-- true se o passaporte trabalha em uma loja ou é admin
exports.pdm:CanUseApp(charId)FinanceHook é chamado pelo bank com Valid, Paid, Default e Done.
Evento de cliente: pdm:TestDrive inicia um test drive com loja e modelo.
