Visão Geral
A Flextor Battle Royale Base foi desenvolvida para proporcionar uma experiência de combate intensa, estratégica e altamente personalizável, integrando elementos competitivos modernos como sistema de ELO, rankings dinâmicos, HUD personalizado e lógica modular.
Projetada sobre o FiveM com arquitetura modular e escalável , essa base é ideal para servidores que desejam oferecer modos PvP com foco em performance, estética e competitividade.
🧠 Arquitetura Técnica
A base se organiza em três camadas principais:
Client-side : Controle da interface, gameplay e interações do jogador.
Server-side : Processamento de lógica, dados e segurança.
Web-side : HUD interativo e menus dinâmicos.
⚙️ Configuração Central: config-side/config.lua
Este é o arquivo de configuração principal que define as regras, visuais e integrações da base.
🔗 Webhooks (Config["Webhooks"]
)
Permite definir endpoints do Discord para logs administrativos e ferramentas de desenvolvedor:
Copiar Config["Webhooks"] = {
["Admin"] = "",
["DevTools"] = "https://discord.com/api/webhooks/..."
}
Admin : Notificações de comandos e punições.
DevTools : Logs de debug e eventos técnicos.
⚙️ Configurações Básicas
Copiar luaCopiarEditarConfig["ReviveFriendCooldown"] = 10
Config["MinimumPlayersToStart"] = 50
Config["MaximumPlayersPerMatch"] = 50
Config["DeveloperMode"] = false
Config["VehicleSpawnLimit"] = 500
Config["VehicleSpawnDelay"] = 400
Config["LootSpawnLimit"] = 350
Config["LootSpawnDelay"] = 350
Cooldown de Revive : tempo em segundos antes de reviver um aliado.
Players mínimos/máximos : define quantos jogadores são necessários para iniciar e jogar.
Vehicle/Loot Spawn : limites e delays para spawn automático.
⚠️ Modificar esses valores pode causar lag.
💬 Discord Rich Presence
Copiar Config["RichPresence"] = {
["Images"] = {
["Ranqueada"] = "ranqueada",
["Casual"] = "casual"
},
["Texts"] = {
["Playing"] = "Jogando Battle Royale",
}
}
Permite customizar como o jogo aparece no Discord. Define imagens e textos por modo.
🧭 Safezone
Copiar Config["Safezone"] = {
["Colors"] = { ["Safezone"] = 19, ["PreSafezone"] = 4 }, -- Cores dos Blips
["DefaultDecreaseSpeed"] = 20, -- Velocidade de diminuição do gás
["FirstTime"] = 1, -- Tempo para criar pela primeira vez (minutos)
["Cooldown"] = 1, -- Cooldown para diminuir e parar de diminuir (minutos)
["Centro"] = { -- Ponto Central da Safe e Coordenadas de Início e Fim do Avião (Para Cada Ponto Central)
[1] = {
{ ["Inicial"] = { 1553.0,-339.47,403.03,130.18 }, ["Final"] = { -1435.63,-2042.47,403.03,130.18 }, ["Centro"] = vector3(163.06,-1022.71,29.39) },
},
[2] = {
{ ["Inicial"] = { -334.55,-765.7,408.39,260.12 }, ["Final"] = { 3539.76,-50.59,408.39,260.12 }, ["Centro"] = vector3(1559.18,-946.69,69.54) },
},
[3] = {
{ ["Inicial"] = { -1237.32,93.47,499.21,225.00 }, ["Final"] = { -10.04,-2353.14,499.21,225.00 }, ["Centro"] = vector3(-882.51,-939.86,15.42) },
},
[4] = {
{ ["Inicial"] = { 126.93,-3358.71,569.76,25.25 }, ["Final"] = { 152.17,1.95,569.76,25.25 }, ["Centro"] = vector3(179.21,-1597.05,29.32) },
}
},
["OutZoneEffects"] = { -- Efeitos visuais que serão ativados quando o jogador estiver fora da zona.
"BikerFilter",
"DeathFailMPIn"
}
}
Controla o comportamento do gás (zona segura):
DefaultDecreaseSpeed : velocidade de contração.
FirstTime e Cooldown : tempo antes e entre contrações.
Centro : múltiplos centros e trajetos de avião.
OutZoneEffects : efeitos visuais para quem está fora da safe.
✈️ Avião
Copiar Config["Airplane"] = {
["model"] = "titan", -- Modelo do Avião
["npc"] = "ig_andreas", -- Motorista do Avião
}
npc : modelo do NPC piloto.
🔫 Armas Iniciais
Copiar Config["DefaultWeapons"] = {
["WEAPON_PISTOL"] = { ammo = 180 },
}
Lista de armas padrão com munição recebidas ao entrar no jogo.
🔥 Modos de Jogo
Copiar Config["Modes"] = {
{ ["mode"] = "solo", ["maxPlayers"] = 1, ["minimumPlayers"] = 1 },
{ ["mode"] = "duo", ["maxPlayers"] = 2, ["minimumPlayers"] = 2 },
{ ["mode"] = "squad", ["maxPlayers"] = 4, ["minimumPlayers"] = 3 },
{ ["mode"] = "solor", ["maxPlayers"] = 1, ["minimumPlayers"] = 1 },
{ ["mode"] = "duor", ["maxPlayers"] = 2, ["minimumPlayers"] = 2 },
{ ["mode"] = "squadr", ["maxPlayers"] = 4, ["minimumPlayers"] = 3 },
}
Define os modos disponíveis:
Cada um com:
maxPlayers
, minimumPlayers
: limites por equipe.
🎲 Sistema de Raridade
Copiar Config["RarityLevels"] = {
[0] = { ["name"] = "Comum", ["percentage"] = 50 },
[1] = { ["name"] = "Incomum", ["percentage"] = 25 },
[2] = { ["name"] = "Rara", ["percentage"] = 15 },
[3] = { ["name"] = "Épica", ["percentage"] = 7 },
[4] = { ["name"] = "Legendária", ["percentage"] = 3 },
}
Define a chance de aparecer itens por raridade:
📦 Sistema de Loot
Copiar Config["Loots"] = {
["Items"] = {
["Weapons"] = {
{ ["index"] = "WEAPON_HATCHET", ["ammoAmount"] = 0, ["rarity"] = 0 },
{ ["index"] = "WEAPON_SWITCHBLADE", ["ammoAmount"] = 0, ["rarity"] = 2 },
{ ["index"] = "WEAPON_STONE_HATCHET", ["ammoAmount"] = 0, ["rarity"] = 3 },
{ ["index"] = "WEAPON_HEAVYSNIPER_MK2", ["ammoAmount"] = math.random(1,3), ["rarity"] = 4 },
},
["Items"] = {
{ ["index"] = "bandagem", ["amount"] = math.random(3,7), ["rarity"] = 0 },
{ ["index"] = "colete", ["amount"] = math.random(3,7), ["rarity"] = 1 },
{ ["index"] = "mochila2", ["amount"] = 1, ["rarity"] = 2 },
{ ["index"] = "mochila3", ["amount"] = 1, ["rarity"] = 3 },
},
["Ammo"] = {
{ ["index"] = "wammo|WEAPON_PISTOL_MK2", ["amount"] = math.random(60,250), ["rarity"] = 0 },
{ ["index"] = "wammo|WEAPON_REVOLVER", ["amount"] = math.random(20,50), ["rarity"] = 2 },
{ ["index"] = "wammo|WEAPON_HEAVYSNIPER_MK2", ["amount"] = math.random(5,10), ["rarity"] = 3 },
}
},
["Locates"] = {
{ 1020.43,491.76,96.94 },
{ 1006.44,489.56,98.72 },
{ 983.78,508.54,103.28 },
},
}
Define o que pode ser gerado no mapa:
Weapons : armas com index
, ammoAmount
e rarity
.
Items : bandagens, coletes, mochilas com amount
e rarity
.
Ammo : munições com quantidades e raridades.
Locates : coordenadas de spawn de loot no mapa.
📌 Os valores de munição utilizam math.random
, tornando o sistema dinâmico e balanceado.
🚗 Sistema de Veículos
Copiar Config["Vehicles"] = {
["Plates"] = "FLEXTOR",
["Vehicles"] = {
-- Compactos
{ ["index"] = "blista" },
{ ["index"] = "brioso" },
{ ["index"] = "dilettante" },
{ ["index"] = "issi2" },
{ ["index"] = "panto" },
{ ["index"] = "prairie" },
{ ["index"] = "rhapsody" },
-- Sedans
},
["Locates"] = {
{8.93,-1066.54,37.15,250},
},
}
Plates : placa padrão dos veículos.
Vehicles : lista extensa por categoria (compactos, sedans, off-road, muscle, esportivos, motos etc.).
Locates : coordenadas e heading para spawn dos veículos.
🏆 Sistema de ELO (Config["Elos"]
)
Permite configurar ranques competitivos para jogadores, com nomes, divisões e pontuações necessárias:
Copiar Config["Elos"] = {
-------------------------------------------------------------------------------------------------
-- Radiante
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Radiante",
["EloDivisions"] = {},
["Score"] = 32500
},
-------------------------------------------------------------------------------------------------
-- Imortal
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Imortal",
["EloDivisions"] = {
["I"] = 14000,
["II"] = 20000,
["III"] = 25000,
}
},
-------------------------------------------------------------------------------------------------
-- Ascendente
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Ascendente",
["EloDivisions"] = {
["I"] = 11000,
["II"] = 12300,
["III"] = 13100,
}
},
-------------------------------------------------------------------------------------------------
-- Diamante
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Diamante",
["EloDivisions"] = {
["I"] = 8500,
["II"] = 9200,
["III"] = 9950,
}
},
-------------------------------------------------------------------------------------------------
-- Platina
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Platina",
["EloDivisions"] = {
["I"] = 6700,
["II"] = 7200,
["III"] = 7925,
}
},
-------------------------------------------------------------------------------------------------
-- Ouro
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Ouro",
["EloDivisions"] = {
["I"] = 5200,
["II"] = 5800,
["III"] = 6100,
}
},
-------------------------------------------------------------------------------------------------
-- Prata
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Prata",
["EloDivisions"] = {
["I"] = 4000,
["II"] = 4500,
["III"] = 5000,
}
},
-------------------------------------------------------------------------------------------------
-- Bronze
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Bronze",
["EloDivisions"] = {
["I"] = 2500,
["II"] = 3200,
["III"] = 3600,
}
},
-------------------------------------------------------------------------------------------------
-- Ferro
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Ferro",
["EloDivisions"] = {
["I"] = 1000,
["II"] = 1500,
["III"] = 2000,
}
},
-------------------------------------------------------------------------------------------------
-- Novato
-------------------------------------------------------------------------------------------------
{
["EloName"] = "Recruta",
["EloDivisions"] = {}
},
}
📌 Como configurar :
Adicione ou remova divisões.
Ajuste os scores para balanceamento da progressão.
Os módulos de ranking usarão esses dados automaticamente.
Outras Seções (que posso documentar na sequência):
🔫 WeaponsConfig
: Armas disponíveis no Battle Royale.
🚀 SpawnPoints
: Pontos de entrada dos jogadores no mapa.
🎯 SafeZone
: Parâmetros da zona segura.
📦 LootTables
: Tabelas de geração de loot.
🧠 GameplaySettings
: Regras gerais da partida.
📌 server.cfg
O arquivo server.cfg
é responsável por iniciar os recursos, definir parâmetros do servidor e garantir o carregamento adequado da base.
Inclui:
Slots e steam/license validation.
Ordem de carregamento: flextor_core
, mysql-async
, etc.