Skip to main content
O safezone cria áreas poligonais onde o jogador fica invencível e em modo “fantasma” (ghost), com PvP bloqueado. A detecção é feita no cliente comparando a posição com os polígonos. Ao entrar, o estado LocalPlayer.state.Safezone é definido (replicado) e os efeitos aplicados; ao sair, são revertidos.

Funcionalidades

Dentro de uma safezone, os seguintes efeitos são aplicados:

Invencibilidade

SetEntityInvincible(Ped, true) torna o jogador imune a dano enquanto estiver na zona.

Modo Fantasma

SetLocalPlayerAsGhost(true) remove a colisão com outros players.

Fogo Amigo Desligado

NetworkSetFriendlyFireOption(false) desativa o fogo amigo.

Disparo Bloqueado

DisablePlayerFiring + controles de ataque/mira desativados.

Remoção de Armas

Se armado ao entrar, dispara inventory:CleanWeapons.

Veículos em Ghost

SetNetworkVehicleAsGhost(Vehicle, true), revertido ao sair.

Dependências

PolyZone

Zonas poligonais.

vrp

Framework base.

inventory

inventory:CleanWeapons.

Configuração

Este recurso não possui pasta config/. As zonas ficam na tabela SafeZones em client-side/core.lua, cada uma criada via PolyZone:Create(pontos, opções):
Zonas atuais: "1" (urbana, sem limite de Z) e "Banned" (minZ = 8.99, maxZ = 33.99).

Eventos

Este recurso não registra eventos próprios. Apenas dispara inventory:CleanWeapons (do inventory) para limpar as armas ao entrar armado na zona.

Customização

  • Statebag Safezone: índice da zona quando dentro, false quando fora (replicado). Outros recursos podem lê-lo.
  • Adicionar zonas: novas chamadas PolyZone:Create na tabela SafeZones.
  • Loop de detecção: a cada 1000ms.