DRS Insurance
Uma seguradora a sério: os jogadores fazem seguro aos carros num tablet, com planos, validade e apólice em papel.
Seguradora de veículos: os jogadores fazem seguro aos seus carros num tablet, com planos Básico e Premium, validade e apólice em papel. O preço é calculado a partir do valor real de cada carro.
#Requisitos
| Recurso | Obrigatório |
|---|---|
qb-core | Sim |
ox_lib | Sim |
oxmysql | Sim |
qb-target ou ox_target | Não — sem target usa a tecla E |
#Instalação
- Importa o SQL. Acrescenta as colunas
insuranceeinsurance_expiresà tabelaplayer_vehicles(só se ainda não existirem):
-- DRS Insurance — adds the insurance columns to QBCore's player_vehicles
-- Compatível com MySQL e MariaDB / Works on both MySQL and MariaDB (safe to run more than once)
SET @db = DATABASE();
SET @q = IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'player_vehicles' AND COLUMN_NAME = 'insurance') = 0,
'ALTER TABLE `player_vehicles` ADD COLUMN `insurance` VARCHAR(20) NOT NULL DEFAULT ''none''', 'DO 0');
PREPARE s FROM @q; EXECUTE s; DEALLOCATE PREPARE s;
SET @q = IF((SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'player_vehicles' AND COLUMN_NAME = 'insurance_expires') = 0,
'ALTER TABLE `player_vehicles` ADD COLUMN `insurance_expires` INT NOT NULL DEFAULT 0', 'DO 0');
PREPARE s FROM @q; EXECUTE s; DEALLOCATE PREPARE s;- Garante que o item
insurance_paperexiste noqb-core/shared/items.lua(ou mudaConfig.DocumentItem):
insurance_paper = { name = 'insurance_paper', label = 'Apólice de Seguro', weight = 0, type = 'item', image = 'insurance_paper.png', unique = true, useable = true, shouldClose = true, description = 'Apólice de seguro do veículo' },- Coloca
drs_insuranceemresourcese adiciona aoserver.cfg:
ensure qb-core
ensure ox_lib
ensure oxmysql
ensure drs_insurance#Utilização
- Vai ao agente de seguros (ícone no mapa) e fala com ele.
- No tablet aparecem todos os teus veículos com o estado do seguro: sem seguro, ativo (com data de fim) ou expirado.
- Escolhe o veículo e o plano. O preço aparece antes de pagares.
- Recebes a apólice em papel com matrícula, titular, plano, data de emissão e validade. Ao usá-la, vês os dados.
A apólice pode ser copiada numa reprografia com o DRS Printer.
#Preços
O preço de cada plano é uma percentagem do valor do carro:
| Plano | Percentagem | Duração |
|---|---|---|
basic | 15% | 30 dias |
premium | 35% | 60 dias |
O valor do carro é procurado por esta ordem de prioridade: Config.CustomPrices → ficheiros de Config.PriceFiles (config do stand, carros addon incluídos) → QBCore.Shared.Vehicles. O preço final do seguro nunca é inferior a Config.MinimumPrice, o que cobre também os carros sem preço.
#Opções principais
| Opção | Por defeito | Descrição |
|---|---|---|
Config.Plans | ver acima | Percentagem e duração de cada plano |
Config.Account | 'bank' | Conta cobrada: bank ou cash |
Config.DocumentItem | insurance_paper | Item da apólice |
Config.DocumentReader | 'notify' | notify ou o evento cliente de outro script para mostrar a apólice |
Config.Agent | Pillbox | Modelo, posição e blip do agente |
Config.Target | 'auto' | Target ou tecla E |
#Configuração completa
Config = {}
-- Idioma / Language: 'pt' ou 'en'
Config.Locale = 'pt'
-- Planos de seguro: preço = percentagem do preço do veículo (QBCore.Shared.Vehicles), duração em dias
-- Insurance plans: price = % of the vehicle price (QBCore.Shared.Vehicles), duration in days
Config.Plans = {
basic = { percent = 0.15, days = 30 },
premium = { percent = 0.35, days = 60 },
}
-- De onde vêm os preços dos carros (além do qb-core): ficheiros de config do stand. Percebe linhas com
-- model = '...' e price = N ou costs = N. Os que não existirem são ignorados.
-- Where car prices come from (besides qb-core): the dealership's config files. Understands lines with
-- model = '...' and price = N or costs = N. Missing ones are skipped.
Config.PriceFiles = {
{ resource = 'qb-vehicleshop', file = 'config.lua' },
{ resource = 'qb-vehicleshop', file = 'shared/config.lua' },
}
-- Preços manuais (ganham a tudo) / Manual prices (override everything)
Config.CustomPrices = {
-- ['18rs7'] = 600000,
}
-- Preço mínimo de um seguro (para veículos sem preço definido) / Minimum insurance price (vehicles without a price)
Config.MinimumPrice = 500
-- Conta de onde sai o dinheiro: 'bank' ou 'cash' / Account to charge: 'bank' or 'cash'
Config.Account = 'bank'
-- Animação de segurar um tablet enquanto o menu está aberto / Hold-a-tablet animation while the menu is open
Config.TabletAnim = true
Config.Currency = '€'
-- Documento entregue ao comprar / Document given on purchase
Config.GiveDocument = true
Config.DocumentItem = 'insurance_paper'
-- Mostrar o documento ao usá-lo: 'notify' (aviso) ou o nome de um evento cliente de outro script
-- Show the document when used: 'notify' or the name of another script's client event
Config.DocumentReader = 'notify'
-- Agente de seguros / Insurance agent
Config.Agent = {
model = 's_m_m_highsec_01',
coords = vector4(-70.60, -800.26, 44.23, 341.11),
blip = { enabled = true, sprite = 408, color = 3, scale = 0.9 },
}
-- 'auto' deteta qb-target/ox_target; se nenhum existir usa a tecla E / 'auto' detects qb-target/ox_target, else E key
Config.Target = 'auto'
#Resolução de problemas
"Unknown column 'insurance'" — o SQL não foi importado.
O preço aparece sempre no mínimo — o carro não tem preço no QBCore nem no stand. Acrescenta-o em Config.CustomPrices ou indica o ficheiro de config do teu stand em Config.PriceFiles.