Skip to main content
O five-jobs é a central de empregos legais do servidor. O jogador interage com a Agência de Empregos (ponto físico no mapa via sleepless_interact), escolhe um emprego na interface NUI e cumpre rotas/coletas pela cidade para ganhar itens, dinheiro e XP.

Funcionalidades

15 empregos prontos

Minerador, jornaleiro, rebocador, cegonha, taxista, motorista, pescador, lixeiro, agricultor de trigo, agricultor de laranjas, lenhador, eletricista, entregador.

Dois sistemas de nível

Nível geral do trabalhador e nível individual por emprego, cada um com seu multiplicador de recompensa.

Missões

Missões por emprego que dão XP.

Bônus por horas trabalhadas

Dinheiro a cada faixa de horas, com reset periódico.

Ranking

Os 15 jogadores com mais XP.

Troca de uniforme

Troca automática de uniforme ao iniciar empregos que definem clothes.
Aviso do código (client-side/professions.lua): a lógica de cada emprego é codificada em Lua na função jobThread. Adicionar um emprego totalmente novo exige programar essa lógica.

Dependências

As dependências abaixo são necessárias para o funcionamento do recurso.
Sistemas externos esperados: Notify, Progress, snt/animations/*, snt/inventory/*, garages:Delete.

Configuração

a sub-tabela command está definida mas não é usada, não existe RegisterCommand para abrir a agência. Ela só abre pelo ponto de interação físico.
o nível geral do trabalhador NÃO usa Config.workerLevels. O servidor usa uma tabela local fixa em server-side/core.lua:
Para alterar a curva do nível geral, edite essa tabela WorkerLevels no servidor (o Config.workerLevels sozinho não tem efeito).
Cálculo do multiplicador: a cada coleta, o bônus final é multiplicador_do_emprego + multiplicador_geral. A quantidade entregue é base + floor(base * multiplicador).
id único, jobId válido (deve existir em Config.professions), target (nº de coletas), xp (XP geral).
Cada chave é o jobId:
  • collectItems: item = "dollar" entrega dinheiro. Quantidade fixa ou {min,max}.
  • requiredItems: itens exigidos/consumidos; consume desconta do inventário.
  • clothes: {drawable, texture} por componente. A roupa original é restaurada ao sair.
displaySalary / salário: nenhum emprego define displaySalary, então o salário aparece como 0 na NUI. Para exibir, adicione displaySalary = <numero> na definição (campo cosmético; a recompensa real vem de collectItems).requiredLevel existe em vários empregos mas o servidor não bloqueia o início por nível (hoje é só informativo).
Define, por jobId, coordenadas e parâmetros (requiredVehicle, routePoints, crops, trees, etc.). Edite para mudar onde cada emprego acontece.

Comandos

Nenhum. Toda a interação é pela NUI (agência física no mapa) e pelo keybind F7 (cancelar emprego, remapeável nas configurações do FiveM).

Localizações

Agência de Empregos (config/config.lua)

O ped da agência também é spawnado por five-modules (peds.lua) em -268.97, -956.1, 31.22, 209.77.

Rotas e pontos por emprego (config/routes.lua)

Coordenadas de cada emprego (spawns, centrais, coletas/entregas). Empregos com muitos pontos repetidos têm a contagem indicada; a variável fica em Config.routes["<jobId>"].

Exports

O export abaixo é o único publicado pelo recurso (client-side; nenhum export server-side).

Banco de Dados

Tabela five_jobs_data criada automaticamente no start. Colunas principais: characterId (PK), currentExp, currentLvl, missionsProgress (JSON), jobsExp (JSON), todayEarnings, totalEarnings, workedMinutes, bonusProgress (JSON). Salvamento em lote a cada 10 minutos e no playerDropped.

Customização

Adicionar um novo emprego

1

config/professions.lua

Adicione a definição (name, expGainPerCollect, collectItems, opcional displaySalary).
2

config/routes.lua

Adicione as coordenadas/rota.
3

client-side/professions.lua

Em jobThread, adicione um elseif jobId == "meu_emprego" then com a lógica (copie de um emprego parecido).

Ajustar recompensas/níveis

  • Recompensa real = collectItems/extraItems (config/professions.lua).
  • Curva por emprego: Config.perJobLevels + Config.perLevelMultiplier.
  • Curva geral: edite WorkerLevels no topo de server-side/core.lua.
  • Bônus por horas e missões: Config.bonusByWorkedHours e Config.missions.