Personalização
Tudo o que você pode alterar está em config.lua e locales/. O restante do resource possui proteção escrow, exceto pelas telas do aplicativo.
Qual arquivo decide o quê
Seção intitulada “Qual arquivo decide o quê”| Arquivo | O que ele decide | Aberto para edição |
|---|---|---|
config.lua | Framework, dinheiro, chance de falha, polícia, listagem na App Store, drogas, níveis, zonas | Sim |
locales/*.lua | As notificações do celular, um arquivo por idioma | Sim |
locales/locales.lua | A tabela de idiomas que os arquivos de tradução preenchem | Sim |
ui/img/ | As imagens do app: uma por droga, o logo da tela inicial e o ícone do aplicativo (icon.png) | Sim |
ui/index.html, ui/styles.css, ui/script.js | As telas do aplicativo, layout e textos dos botões | — |
player_data.json | As vendas, nível e bônus de cada traficante. Gravado pelo resource | Sim |
client/, server/ | A lógica | Com escrow |
Não há uma pasta bridge separada: o framework é escolhido por Config.Framework abaixo.
Framework e dinheiro
Seção intitulada “Framework e dinheiro”| Opção | O que faz | Padrão |
|---|---|---|
Config.Framework | "ESX" ou "QB", em maiúsculas. No QBox, use "QB" — o QBox executa resources QBCore através de sua camada de compatibilidade | "ESX" |
Config.esxResourceName | O nome do resource do ESX, caso o seu não seja o padrão | "es_extended" |
Config.qbResourceName | O nome do resource do QBCore, caso o seu não seja o padrão. Mantenha como "qb-core" no QBox | "qb-core" |
Config.BlackMoney | Pagar em dinheiro sujo em vez de dinheiro limpo | true |
Config.MoneyAsItem | Pagar como um item de inventário em vez de depositar em uma conta | true |
Config.MoneyItem | O item pago quando MoneyAsItem está ativado e BlackMoney está desativado | "money" |
O que o jogador realmente recebe:
| ESX | QBCore / QBox | |
|---|---|---|
| Dinheiro sujo, como item | Item black_money | Item blackmoney |
| Dinheiro sujo, como conta | Conta black_money | Item blackmoney |
| Dinheiro limpo, como item | Item de Config.MoneyItem | Item de Config.MoneyItem |
| Dinheiro limpo, como conta | Dinheiro em mãos (Cash) | Dinheiro em mãos (Cash) |
A negociação
Seção intitulada “A negociação”| Opção | O que faz | Padrão |
|---|---|---|
Config.Failure | A chance, de 0 a 100, de o comprador dispensar o jogador após bater na porta. As drogas continuam com o jogador | 55 |
Config.DealTimeout | Segundos para chegar até a porta antes que a oferta expire | 300 |
Config.MinimumPolice | Policiais online necessários antes que alguém compre. 0 desativa a verificação | 1 |
A quantidade vendida é escolhida aleatoriamente entre minAmount e maxAmount da droga quando o jogador toca em SELL; a porta é escolhida aleatoriamente entre as zonas da droga.
Polícia
Seção intitulada “Polícia”| Opção | O que faz | Padrão |
|---|---|---|
Config.PoliceJobs | Os empregos contabilizados como polícia e que recebem os alertas | police, sheriff |
Config.PoliceAlertChance | A chance, de 0 a 100, de uma venda bem-sucedida ser denunciada | 20 |
Config.PoliceNotifyAppName | O título do alerta no lb-phone do policial | "Police Dispatch" |
Config.PoliceBlipSprite | O blip colocado onde a venda aconteceu | 161 |
Config.PoliceBlipColor | A cor dele | 38 |
Config.PoliceBlipScale | O tamanho dele | 1.0 |
Config.PoliceBlipDuration | Segundos antes de o blip desaparecer | 120 |
Config.PriceMultipliers | Faixas de preço por número de policiais online, cada uma com minPolice, maxPolice e multiplier | Veja abaixo |
Faixas padrão: 1–2 policiais ×1.0, 3–4 ×1.2, 5–6 ×1.4, 7–9 ×1.6, 10 ou mais ×2.0. Com um número de policiais que nenhuma faixa cubra, os preços permanecem em ×1.0.
Como o preço é calculado. O bônus de nível e o bônus de polícia são somados, não multiplicados: um traficante nível 5 (×1.5) vendendo com seis policiais online (×1.4) recebe 1 + 0.5 + 0.4 = ×1.9 do preço base.
Todos os policiais com um emprego listado em PoliceJobs recebem o alerta; não há verificação de estar em serviço (on-duty).
Quem vê o aplicativo
Seção intitulada “Quem vê o aplicativo”| Opção | O que faz | Padrão |
|---|---|---|
Config.BlockedAppJobs | Empregos que não podem ver nem instalar o app. Verificado quando o jogador carrega e sempre que seu emprego muda | police, sheriff, ambulance, mechanic |
A listagem na App Store
Seção intitulada “A listagem na App Store”| Opção | O que faz | Padrão |
|---|---|---|
Config.name | O nome do aplicativo no celular | "Drug Dealer" |
Config.description | A descrição abaixo dele na App Store | "Deal dope, dodge the cops" |
Config.defaultApp | true coloca o app já instalado em todos os celulares; false significa que ele é baixado pela App Store | false |
Config.size | O tamanho mostrado na loja, em KB | 25400 |
Config.price | Quanto custa para instalar | 0 |
O ícone do aplicativo é ui/img/icon.png. Substitua o arquivo para alterá-lo.
Config.drugs é uma lista; cada entrada é um botão no aplicativo.
| Campo | O que faz |
|---|---|
item | O item de inventário que é vendido |
label | O nome mostrado no aplicativo e nas notificações |
price | Preço por unidade, antes dos bônus |
minAmount, maxAmount | A faixa da qual a quantidade de cada negociação é sorteada |
zones | Em quais zonas de Config.NPCLocations um comprador pode estar |
image | Um nome de arquivo dentro de ui/img/ |
minLevel | O nível de traficante necessário para vendê-la |
Para adicionar uma droga, adicione uma entrada, coloque a imagem dela em ui/img/ e certifique-se de que o item exista no seu inventário. Imagens que já estão lá e são usadas pela lista padrão: baggy_weed.png, baggy_cocaine.png, lsd.png, baggy_meth.png, mushroom.png, opium.png, crack.png, drug_heroin.png, xtc_baggy.png, oxy.png, drug_lean.png, drug_hash.png.
Config.levels lista os ranques em ordem. Cada um tem um número level, um name, salesRequired (o número total de negociações, não de unidades) e bonusMultiplier.
| Nível | Nome | Vendas | Bônus |
|---|---|---|---|
| 1 | Newbie | 0 | ×1.0 |
| 2 | Rookie | 25 | ×1.1 |
| 3 | Hustler | 75 | ×1.2 |
| 4 | Dealer | 150 | ×1.35 |
| 5 | Trader | 300 | ×1.5 |
| 6 | Boss | 600 | ×1.75 |
| 7 | Kingpin | 1200 | ×2.0 |
| 8 | Overlord | 2000 | ×2.25 |
| 9 | Tycoon | 3500 | ×2.5 |
| 10 | Legend | 5000 | ×3.0 |
Mantenha-os em ordem crescente de salesRequired; o nível é calculado percorrendo a lista de cima para baixo.
| Opção | O que faz | Padrão |
|---|---|---|
Config.dataFile | O arquivo na pasta do resource que armazena o progresso de cada traficante | "player_data.json" |
O progresso é mantido por personagem: o identificador do ESX ou o citizen ID do QBCore.
Config.NPCLocations é numerado; os números são aquilo a que o campo zones de uma droga se refere. Cada zona possui:
| Campo | O que faz |
|---|---|
peds | Modelos de ped, um escolhido aleatoriamente para atender a porta |
locations | Posições das portas (x, y, z e direção) |
| Zona | Área | Portas incluídas |
|---|---|---|
| 1 | Grove | 1 |
| 2 | Píer e praia | 10 |
| 3 | Casas de Vinewood | 10 |
| 4 | Sandy Shores | 8 |
| 5 | Paleto Bay | 9 |
Você pode adicionar zonas e portas livremente. Um detalhe importante: o nome da zona no alerta policial vem do próprio resource e só conhece as zonas de 1 a 5; qualquer zona que você adicionar será reportada como “Unknown Zone”.
Idiomas
Seção intitulada “Idiomas”Nove já vêm em locales/: en, es, fr, de, it, pt, pl, ru e tr. Defina Config.Locale para um deles.
Para adicionar um novo:
- Copie
locales/en.luapara um novo arquivo, por exemplolocales/nl.lua. - Altere o código no topo para
nle traduza o texto. - Adicione
locales/nl.luaà listashared_scriptsemfxmanifest.lua, ao lado dos outros e acima deconfig.lua. - Defina
Config.Locale = "nl", depois executerefreshe reinicie o resource.
Os arquivos de idioma cobrem as notificações do celular. Os botões próprios do aplicativo — DRUGS, PROFILE, SELL, CANCEL e a tela de perfil — estão escritos em ui/script.js e ui/index.html.