fivemgangterritoryroleplaypvp
Gang System in FiveM — Create groups and territories.
March 22, 2026
2 min read
3 views
Gang System in FiveM
Gang system creates interesting conflict and political gameplay among players.
Database
CREATE TABLE `gangs` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(50) UNIQUE,
`label` VARCHAR(100),
`color` VARCHAR(7) DEFAULT '#FF0000',
`balance` INT DEFAULT 0
);
CREATE TABLE `gang_members` (
`identifier` VARCHAR(50) PRIMARY KEY,
`gang` VARCHAR(50),
`rank` INT DEFAULT 0,
`joined_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE `gang_territories` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(100),
`coords` TEXT,
`radius` FLOAT DEFAULT 100.0,
`owner` VARCHAR(50) DEFAULT NULL,
`capture_progress` INT DEFAULT 0
);
Territory Control
-- Config
Config.Territories = {
{
id = 1,
name = 'Forum Drive',
coords = vector3(165.0, -1718.0, 29.0),
radius = 120.0,
reward = 5000 -- money per hour held
},
{
id = 2,
name = 'Grove Street',
coords = vector3(100.0, -1950.0, 20.0),
radius = 100.0,
reward = 8000
}
}
-- Capture Logic (Client)
local captureTick = {}
Citizen.CreateThread(function()
while true do
local coords = GetEntityCoords(PlayerPedId())
for _, territory in ipairs(Config.Territories) do
local dist = GetDistanceBetweenCoords(coords, territory.coords, true)
if dist <= territory.radius then
TriggerServerEvent('gang:inTerritory', territory.id)
end
end
Citizen.Wait(5000) -- checks every 5 seconds
end
end)
-- Server
local territoryPlayers = {} -- {[territoryId] = {[gangName] = count}}
RegisterNetEvent('gang:inTerritory')
AddEventHandler('gang:inTerritory', function(territoryId)
local src = source
local xPlayer = ESX.GetPlayerFromId(src)
local gangData = GetPlayerGang(xPlayer.identifier) -- custom function
if not gangData then return end
if not territoryPlayers[territoryId] then
territoryPlayers[territoryId] = {}
end
territoryPlayers[territoryId][src] = {
gang = gangData.name,
time = GetGameTimer()
}
end)
-- Reward every 30 minutes
Citizen.CreateThread(function()
while true do
Citizen.Wait(1800000) -- 30 minutes
for _, territory in ipairs(Config.Territories) do
local owner = GetTerritoryOwner(territory.id)
if owner then
-- Pay money to gang members online
for _, playerId in ipairs(GetPlayers()) do
local src = tonumber(playerId)
local xPlayer = ESX.GetPlayerFromId(src)
local gang = GetPlayerGang(xPlayer.identifier)
if gang and gang.name == owner then
xPlayer.addMoney(territory.reward)
end
end
end
end
end
end)
Gang Rank System
Config.GangRanks = {
[0] = { label = 'New Member', canRecruit = false, canKick = false },
[1] = { label = 'Member', canRecruit = false, canKick = false },
[2] = { label = 'Subhead', canRecruit = true, canKick = false },
[3] = { label = 'Head', canRecruit = true, canKick = true }
}
-- Recruit
RegisterNetEvent('gang:recruit')
AddEventHandler('gang:recruit', function(targetId)
local src = source
local xPlayer = ESX.GetPlayerFromId(src)
local recruiterGang = GetPlayerGang(xPlayer.identifier)
if not recruiterGang then return end
if recruiterGang.rank < 2 then
TriggerClientEvent('M2.Notify:Notify', src, 'error', 'No recruit privileges', 3000)
return
end
local xTarget = ESX.GetPlayerFromId(targetId)
if not xTarget then return end
MySQL.update.await(
'INSERT INTO gang_members (identifier, gang, rank) VALUES (?, ?, 0) ON DUPLICATE KEY UPDATE gang = ?, rank = 0',
{ xTarget.identifier, recruiterGang.name, recruiterGang.name }
)
TriggerClientEvent('M2.Notify:Notify', targetId, 'success',
'Welcome to ' ..recruiterGang.name, 5000)
end)
Summary
Gang system creates interesting dynamics for server territory control, ranks and economics, giving players long-term goals.
Related Articles
Breaking: GTA Online อัพเดท "Money Fronts" — FiveM Server Owners ต้องทำอะไร?
Rockstar ปล่อย GTA Online อัพเดท Money Fronts มีผลกระทบต่อ FiveM servers บางส่วน นี่คือสิ่งที่ต้องทำทันทีหลังอัพเดท
Community Spotlight: Script และ Projects ที่น่าสนใจจาก FiveM Community
รวม scripts, tools และ projects ที่โดดเด่นจาก FiveM community ในช่วงที่ผ่านมา ตั้งแต่ free resources ถึง open-source projects
txAdmin อัพเดทใหม่ — Dashboard, Diagnostics และ Ban System ที่ดีขึ้น
txAdmin ซึ่งตอนนี้เป็นส่วนหนึ่งของ Cfx.re อย่างเป็นทางการ ได้รับการอัพเดทครั้งใหญ่ มี features ใหม่ที่ทำให้ Server Management ง่ายขึ้นมาก