mri-QboxResourcesPickle Waypoints

pickle_waypoints — Manual

Exibe o waypoint do mapa como um indicador na tela com distância e um marker 3D no mundo, e permite que admins enviem um waypoint para um jogador específico ou para todos.


Sumário

  1. Dependências
  2. Instalação
  3. Permissões
  4. Configuração
  5. Comandos
  6. Waypoint de admin
  7. Entrypoints para outros recursos
  8. Localização
  9. Estrutura de arquivos

Dependências

RecursoObrigatórioObservação
ox_libSiminputDialog, lib.math.torgba
qb-coreNãoBridge automática. Habilita permissão por job e por grupo
es_extendedNãoBridge automática

A bridge é escolhida em runtime: se es_extended ou qb-core estiverem iniciados, o arquivo correspondente em bridge/ é usado; caso contrário cai no bridge/custom, que só valida permissões por ACE.


Instalação

  1. Copie a pasta pickle_waypoints para resources/.
  2. Adicione ao server.cfg:
    ensure ox_lib
    ensure pickle_waypoints
  3. Não há SQL nem itens.

As preferências do jogador são salvas localmente no client via KVP (pickle_waypoints:settings), não no banco.


Permissões

O comando /adminwaypoint e o evento pickle_waypoints:sendAdminWaypoint são validados por Config.AdminWaypointPermissions. Basta atender a um dos três critérios.

Para liberar por ACE:

add_ace group.admin pickle_waypoints.set allow

Com a bridge do qb-core ou do es_extended, também valem o job (com nível mínimo) e o grupo definidos no config. Com a bridge custom, apenas o ACE é verificado.


Configuração

Arquivo: config.lua.

CampoTipoObrigatórioDescrição
Config.LanguagestringSimIdioma ativo. Deve existir em locales/translations/
Config.UseImperialboolSimtrue exibe a distância em pés/milhas; false, em metros/quilômetros
Config.RenderDistancenumberSimDistância máxima, em metros, para desenhar o marker 3D no mundo
Config.EnterDistancenumberSimDistância que remove automaticamente o waypoint, se ele foi criado com clearEnter
Config.WaypointSettings.iconstring / nilNãoImagem do indicador na tela. nil usa o ícone embutido. Usar imagem alternativa impede a aplicação da cor
Config.WaypointSettings.enabledboolSimPadrão do indicador do waypoint pessoal. O jogador pode desligar em /waypointsettings
Config.WaypointSettings.color{r,g,b,a}SimCor padrão do indicador e do marker
Config.AdminWaypointPermissions.jobstabelaSim["nome_do_job"] = nivel_minimo
Config.AdminWaypointPermissions.groupsarraySimGrupos do framework
Config.AdminWaypointPermissions.acearraySimPermissões ACE

Comandos

ComandoPermissãoDescrição
/waypointsettingsTodosAbre o diálogo de preferências: liga/desliga o indicador e escolhe a cor. Salvo em KVP no client
/clearwaypointsTodosRemove todos os waypoints ativos na tela do jogador, inclusive os recebidos de um admin
/adminwaypointAdminWaypointPermissionsAbre o diálogo para enviar um waypoint a um jogador ou a todos

Waypoint de admin

O fluxo do /adminwaypoint exige que o admin já tenha um waypoint marcado no mapa — as coordenadas vêm dele. Sem waypoint marcado, o comando apenas notifica e sai.

O diálogo pede:

CampoDescrição
RótuloTexto exibido no blip criado no mapa do destinatário
AlvoID do jogador (server id) ou all para todos
BlipID do sprite do blip
Cor do blipID da cor do blip
ÍconeImagem do indicador. default usa o ícone embutido
CorCor RGBA do indicador e do marker
Limpar ao chegarSe marcado, o waypoint some quando o jogador chega a Config.EnterDistance

Ao confirmar, o waypoint do admin no mapa é desmarcado e o evento é enviado ao servidor, que revalida a permissão antes de repassar aos clients.


Entrypoints para outros recursos

Exports do client

-- Cria um waypoint e retorna seu índice.
-- settings aceita: icon, color = {r,g,b,a}, clearEnter (bool), blipId, blipColor
local index = exports['pickle_waypoints']:AddWaypoint('Entrega', coords, {
    color = {0, 230, 153, 255},
    blipId = 38,
    clearEnter = true
})
 
-- Remove o waypoint (e o blip, se houver).
exports['pickle_waypoints']:RemoveWaypoint(index)
 
-- Retorna a tabela do waypoint: { label, coords, icon, color, clearEnter, blip }
local wp = exports['pickle_waypoints']:GetWaypoint(index)
 
-- Move o waypoint sem recriá-lo.
exports['pickle_waypoints']:UpdateWaypointCoords(index, coords)
 
-- Troca ícone e cor de um waypoint existente.
exports['pickle_waypoints']:UpdateWaypointSettings(index, { color = {255, 0, 0, 200} })

Eventos

-- Servidor -> client: cria um waypoint no destinatário.
TriggerClientEvent('pickle_waypoints:addWaypoint', target, label, coords, settings)
 
-- Client -> servidor: envia um waypoint de admin. Revalida a permissão no servidor.
TriggerServerEvent('pickle_waypoints:sendAdminWaypoint', coords, label, target, blipId, blipColor, icon, color, clearEnter)
 
-- Servidor -> client: abre o diálogo de waypoint de admin.
TriggerClientEvent('pickle_waypoints:adminWaypointMenu', source)

O waypoint pessoal (o que o jogador marca no mapa) é gerenciado por um loop interno e não deve ser criado via AddWaypoint — ele é recriado sozinho a cada segundo enquanto houver um blip de waypoint ativo.


Localização

As strings ficam em locales/translations/, uma tabela Language["<codigo>"] por arquivo. Idiomas incluídos:

  • en.lua — inglês
  • pt.lua — português

O idioma ativo é escolhido pelo Config.Language (não pela convar ox:locale). Para adicionar um idioma, crie locales/translations/<codigo>.lua seguindo a estrutura dos existentes e aponte o Config.Language para ele.


Estrutura de arquivos

pickle_waypoints/
├── config.lua                      — todas as opções
├── core/
│   ├── client.lua                  — helper CreateBlip
│   └── shared.lua                  — utilitários (lerp, round, v3)
├── modules/
│   ├── main/
│   │   ├── client.lua              — render do indicador e do marker, comando /clearwaypoints, exports
│   │   └── server.lua              — comando /adminwaypoint e validação de permissão
│   └── waypoint/
│       └── client.lua              — waypoint pessoal, KVP de preferências, /waypointsettings
├── bridge/
│   ├── qb/                         — permissões por job/grupo do qb-core
│   ├── esx/                        — permissões por job/grupo do es_extended
│   └── custom/                     — fallback, só ACE
├── locales/
│   ├── locale.lua                  — função _L
│   └── translations/
│       ├── en.lua
│       └── pt.lua
├── nui/
│   ├── index.html                  — indicador na tela
│   └── assets/                     — CSS, fonte, ícone do waypoint
└── fxmanifest.lua