Gom Fivem Apr 2026

files { 'html/ .html', 'html/ .css', 'html/*.js' }

client_scripts { 'client/*.lua' }

CREATE TABLE gom_stash ( id INT PRIMARY KEY AUTO_INCREMENT, gang_id INT NOT NULL, item_name VARCHAR(50) NOT NULL, quantity INT DEFAULT 0, FOREIGN KEY ( gang_id ) REFERENCES gom_gangs ( id ) ); ( server/gom_server.lua ) local QBCore = exports['qb-core']:GetCoreObject() local gangs = {} -- Create gang RegisterNetEvent('gom:createGang') AddEventHandler('gom:createGang', function(gangName, color) local src = source local Player = QBCore.Functions.GetPlayer(src) local identifier = Player.PlayerData.citizenid

-- Load turf zones from server QBCore.Functions.TriggerCallback('gom:getTurfs', function(turfs) currentTurfZones = turfs end) ( html/stash.html ) <!DOCTYPE html> <html> <head> <style> body { margin: 0; padding: 0; font-family: 'Arial', sans-serif; background: transparent; } .stash-container { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 500px; background: rgba(0, 0, 0, 0.9); border-radius: 10px; padding: 20px; color: white; border: 2px solid #ff0000; } .stash-header { text-align: center; font-size: 24px; margin-bottom: 20px; color: #ff0000; } .stash-item { display: flex; justify-content: space-between; padding: 10px; margin: 5px 0; background: rgba(255, 255, 255, 0.1); border-radius: 5px; } .stash-item button { background: #ff0000; border: none; color: white; padding: 5px 10px; cursor: pointer; } .close-btn { position: absolute; top: 10px; right: 10px; background: red; border: none; color: white; cursor: pointer; padding: 5px 10px; } </style> </head> <body> <div class="stash-container"> <button class="close-btn" onclick="closeStash()">X</button> <div class="stash-header">🏢 Gang Stash - <span id="gangName"></span></div> <div>💰 Gang Money: $<span id="gangMoney"></span></div> <div id="stashItems"></div> </div> <script> function closeStash() { fetch('https://gom/closeStash', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({}) }); } gom fivem

MySQL.Async.insert('INSERT INTO gom_gangs (name, leader, color) VALUES (@name, @leader, @color)', { ['@name'] = gangName, ['@leader'] = identifier, ['@color'] = color }, function(id) MySQL.Async.insert('INSERT INTO gom_members (gang_id, identifier, rank) VALUES (@gang_id, @identifier, @rank)', { ['@gang_id'] = id, ['@identifier'] = identifier, ['@rank'] = 'leader' }) TriggerClientEvent('QBCore:Notify', src, 'Gang created!', 'success') end) end)

-- NUI Callbacks RegisterNUICallback('closeStash', function(data, cb) SetNuiFocus(false, false) cb('ok') end)

CREATE TABLE gom_turfs ( id INT PRIMARY KEY AUTO_INCREMENT, gang_id INT NOT NULL, zone_name VARCHAR(50) NOT NULL, coords_x FLOAT NOT NULL, coords_y FLOAT NOT NULL, coords_z FLOAT NOT NULL, income_rate INT DEFAULT 500, FOREIGN KEY ( gang_id ) REFERENCES gom_gangs ( id ) ); files { 'html/

-- Claim turf RegisterNetEvent('gom:claimTurf') AddEventHandler('gom:claimTurf', function(zoneName, coords) local src = source local Player = QBCore.Functions.GetPlayer(src)

-- Periodic income from turfs Citizen.CreateThread(function() while true do Citizen.Wait(1800000) -- Every 30 minutes MySQL.Async.fetchAll('SELECT * FROM gom_turfs', {}, function(turfs) for _, turf in pairs(turfs) do MySQL.Async.execute('UPDATE gom_gangs SET money = money + @income WHERE id = @gang_id', { ['@income'] = turf.income_rate, ['@gang_id'] = turf.gang_id }) end end) end end) ( client/gom_client.lua ) local QBCore = exports['qb-core']:GetCoreObject() local playerGang = nil local currentTurfZones = {} -- Get player gang on spawn RegisterNetEvent('QBCore:Client:OnPlayerLoaded') AddEventHandler('QBCore:Client:OnPlayerLoaded', function() QBCore.Functions.TriggerCallback('gom:getPlayerGang', function(gang) playerGang = gang end) end)

-- Create turf marker Citizen.CreateThread(function() while true do Citizen.Wait(0) local playerPed = PlayerPedId() local coords = GetEntityCoords(playerPed) files { 'html/ .html'

-- Stash system RegisterNetEvent('gom:storeItem') AddEventHandler('gom:storeItem', function(itemName, quantity) local src = source exports['gom']:getPlayerGang(src, function(gang) if gang then MySQL.Async.fetchAll('SELECT * FROM gom_stash WHERE gang_id = @gang_id AND item_name = @item', { ['@gang_id'] = gang.id, ['@item'] = itemName }, function(result) if result[1] then MySQL.Async.execute('UPDATE gom_stash SET quantity = quantity + @q WHERE id = @id', { ['@q'] = quantity, ['@id'] = result[1].id }) else MySQL.Async.insert('INSERT INTO gom_stash (gang_id, item_name, quantity) VALUES (@gang_id, @item, @q)', { ['@gang_id'] = gang.id, ['@item'] = itemName, ['@q'] = quantity }) end TriggerClientEvent('QBCore:Notify', src, 'Item stored in gang stash', 'success') end) end end) end)

-- Get player gang QBCore.Functions.CreateCallback('gom:getPlayerGang', function(source, cb) local src = source local Player = QBCore.Functions.GetPlayer(src) local identifier = Player.PlayerData.citizenid

server_scripts { '@mysql-async/lib/MySQL.lua', 'server/*.lua' }