Como funciona
1
Entrada via NPC
O jogador interage com um NPC (
u_m_y_juggernaut_01) no ponto de entrada (Init.Coords) via ox_target, escolhendo uma das 3 modalidades: Pistolas, Sub-Metralhadoras ou Rifles.2
Guardar e equipar (arena:Enter)
Ao entrar, o servidor faz
vRP.SaveTemporary: guarda inventário, vida, colete, status e posição reais; zera o inventário; define vida 200/colete 100/status cheios; entrega o loadout e teleporta para um respawn aleatório, isolado num bucket por Route (900001/900002/900003).3
Contagem de jogadores
GlobalState["Arena:<Route>"] mantém a contagem de jogadores por modalidade.4
Mortes e killfeed
Morte via
gameEventTriggered: incrementa killstreak do atacante e dispara arena:Death (killfeed). Respawn/reset de streak vêm do survival.5
Saída e restauração
Sair da
PolyZone (ou arena:Exit) restaura tudo (vRP.ApplyTemporary), revive e teleporta de volta. Dentro da arena há stamina infinita e state.Arena desativa lógicas de outros recursos (paramédico, sangramento, dano padrão).Dependências
vrp
SaveTemporary / ApplyTemporary / Bucket.PolyZone
Delimita a área da arena.
ox_target
Menu de entrada no NPC.
survival
Revive; arena:Respawn / ResetStreek.inventory
SaveArena / ApplyArena / CleanWeapons.domination
KillFeed.Configuração
shared-side/shared.lua e client-side/config.lua:
Init.Model/Init.Coords: NPC e posição de entrada (blip sprite 433).Zones["1".."3"]: por modalidade:Respawn(lista vec3, sorteado),Route(bucket),Attachs(acessórios por arma),Ammos(munição por tipo),Itens(armas comAmount/Slot).Polyz["1".."3"](config.lua): polígonoPolyZoneque delimita a arena.
Eventos
Interfaces Tunnel
Publicaarena em ambos os lados: CheckEnter(Table)/CheckExit() (servidor), Config(Number) (cliente).
Recebidos no servidor
Cliente
Também registra
AddStateBagChangeHandler("Arena:<Route>") por modalidade para atualizar a contagem de jogadores na NUI.
Customização
- Modalidades: novas entradas em
Zones(+Route/Polyz) e opções no menuox_target. - Loadouts:
Itens,Attachs,Ammosde cada zona. - Reposicionar:
Init.Coords, pontos deRespawn, vértices dePolyz. - Vida/colete de entrada (200/100): em
vRP.SaveTemporary.
Sem exports e sem persistência em banco.

