fivemgangterritoryroleplaypvp
Gang System ใน FiveM — สร้างกลุ่มและดินแดน
March 22, 2026
2 min read
100 views
Gang System ใน FiveM
Gang system สร้าง conflict ที่น่าสนใจและ political gameplay ในหมู่ผู้เล่น
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 -- เงินต่อชั่วโมงที่ครอง
},
{
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) -- ตรวจทุก 5 วินาที
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 ทุก 30 นาที
Citizen.CreateThread(function()
while true do
Citizen.Wait(1800000) -- 30 นาที
for _, territory in ipairs(Config.Territories) do
local owner = GetTerritoryOwner(territory.id)
if owner then
-- จ่ายเงินให้สมาชิก gang ที่ 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 = 'สมาชิกใหม่', canRecruit = false, canKick = false },
[1] = { label = 'สมาชิก', canRecruit = false, canKick = false },
[2] = { label = 'หัวหน้าย่อย', canRecruit = true, canKick = false },
[3] = { label = 'หัวหน้า', 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', 'ไม่มีสิทธิ์ recruit', 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',
'ยินดีต้อนรับสู่ ' .. recruiterGang.name, 5000)
end)
สรุป
Gang system สร้าง dynamic ที่น่าสนใจให้ server territory control, ranks และ economics ทำให้ผู้เล่นมีเป้าหมายระยะยาว
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 ง่ายขึ้นมาก