From d288c43ef7f78f0c1f8328878c0964943f423120 Mon Sep 17 00:00:00 2001 From: atticl Date: Thu, 13 Nov 2025 01:53:27 +0100 Subject: [PATCH 1/2] NEW: Core Setup --- core/cl_core.lua | 19 +++++++++++++++++++ core/sv_core.lua | 35 +++++++++++++++++++++++++++++++++++ fxmanifest.lua | 17 +++++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 core/cl_core.lua create mode 100644 core/sv_core.lua create mode 100644 fxmanifest.lua diff --git a/core/cl_core.lua b/core/cl_core.lua new file mode 100644 index 0000000..55c4ea9 --- /dev/null +++ b/core/cl_core.lua @@ -0,0 +1,19 @@ +function GB.Core.Start(self) + Citizen.CreateThread(function() + while true do + if NetworkIsSessionStarted() then + TriggerEvent('gb-core:start') + TriggerServerEvent('gb-core:serverStart') + break + end + end + end) +end + +GB.Core.Start(self) + +RegisterNetEvent('gb-core:client:getObject') +AddEventHandler('gb-core:client:getObject', function(callback) + callback(GB) + print('Called back ' .. GB .. ) +end) \ No newline at end of file diff --git a/core/sv_core.lua b/core/sv_core.lua new file mode 100644 index 0000000..759bfda --- /dev/null +++ b/core/sv_core.lua @@ -0,0 +1,35 @@ +RegisterServerEvent('gb-core:serverStart') +AddEventHandler('gb-core:serverStart', function() + local src = source + Citizen.CreateThread(function() + local identifier = GetPlayerIdentifiers(src)[1] -- gets IDENTIFIER:1234567890 + if not identifier then + DropPlayer(src, "Identifier not located.") -- Removes player if not found + end + return + end) +end) + +RegisterNetEvent('gb-core:server:getObject') +AddEventHandler('gb-core:server:getObject', function(callback) + callback(GB) +end) + +--// COMMANDS \\-- +AddEventHandler('gb-core:addCommand', function(command, callback, suggestion, args) + GB.Functions.addCommand(command, callback, suggestion, args) +end) + +AddEventHandler('gb-core:addGroupCommand', function(command, group, callback, callbackfailed, suggestion, args) + GB.Functions.addGroupCommand(command, group, callback, callbackfailed, suggestion, args) +end) + +--// CALLBACK SERVER \\-- +RegisterServerEvent('gb-core:server:triggerServerCallback') +AddEventHandler('gb-core:server:triggerServerCallback', function(name, requestId, ...) + local src = source + + GB.Functions.TriggerServerCallback(name, requestId, src, function(...) + TriggerClientEvent('gb-core:client:serverCallback', src, requestId, ...) + end, ...) +end) \ No newline at end of file diff --git a/fxmanifest.lua b/fxmanifest.lua new file mode 100644 index 0000000..76d17a9 --- /dev/null +++ b/fxmanifest.lua @@ -0,0 +1,17 @@ +fx_version 'cerulean' +games 'gta5' + +author 'gb-framework' +description 'n/a' +version '0.0.1' + +-- dependency 'ghmattimysql' + +client_scripts { + 'core/cl_core.lua' +} + +server_scripts { + 'core/sv_core.lua' +} + -- 2.49.1 From 4dd4da3482c8d1d410184d2caa61faea379d4029 Mon Sep 17 00:00:00 2001 From: atticl Date: Thu, 13 Nov 2025 02:15:28 +0100 Subject: [PATCH 2/2] NEW: 'CALL GB." NEW: 'KEYS' NEW: 'ADMIN [BASIC]' NEW: 'CALLBACKS' NEW: 'OTHER --- events/cl_events.lua | 118 +++++++++++++++++++++++++++++++++++++++++++ fxmanifest.lua | 3 +- 2 files changed, 120 insertions(+), 1 deletion(-) create mode 100644 events/cl_events.lua diff --git a/events/cl_events.lua b/events/cl_events.lua new file mode 100644 index 0000000..2467c90 --- /dev/null +++ b/events/cl_events.lua @@ -0,0 +1,118 @@ +--// CALL GB.\\-- +GB.Functions = GB.Functions or {} +GB.RequestID = GB.RequestID or {} +GB.ServerCallback = GB.ServerCallback or {} +GB.ServerCallbacks = {} +GB.CurrentRequestId = 0 + +GB.Functions.GetKey = function(key) + local Keys = { + ["ESC"] = 322, ["F1"] = 288, ["F2"] = 289, ["F3"] = 170, ["F4"] = 166, ["F5"] = 167, ["F6"] = 168, ["F7"] = 169, ["F8"] = 56, ["F9"] = 57, ["F10"] = 165, + ["~"] = 243, ["1"] = 157, ["2"] = 158, ["3"] = 159, ["4"] = 160, ["5"] = 164, ["6"] = 161, ["7"] = 162, ["8"] = 163, ["9"] = 84, ["0"] = 83, ["-"] = 245, ["="] = 246, + ["BACKSPACE"] = 177, ["TAB"] = 37, ["Q"] = 44, ["W"] = 32, ["E"] = 38, ["R"] = 45, ["T"] = 245, ["Y"] = 246, ["U"] = 303, ["I"] = 199, ["O"] = 39, ["P"] = 40, + ["["] = 39, ["]"] = 40, ["ENTER"] = 18, ["CAPS"] = 137, ["A"] = 34, ["S"] = 8, ["D"] = 9, ["F"] = 23, ["G"] = 47, ["H"] = 74, ["J"] = 311, ["K"] = 311, ["L"] = 182, + ["LEFTSHIFT"] = 21, ["Z"] = 20, ["X"] = 73, ["C"] = 26, ["V"] = 0, ["B"] = 29, ["N"] = 249, ["M"] = 244, [","] = 82, ["."] = 81, ["RIGHTSHIFT"] = 21, + ["LEFTCTRL"] = 36, ["LEFTALT"] = 19, ["SPACE"] = 22, ["RIGHTCTRL"] = 70, ["HOME"] = 213, ["PAGEUP"] = 10, ["PAGEDOWN"] = 11, ["DELETE"] = 178, + ["LEFT"] = 174, ["RIGHT"] = 175, ["TOP"] = 27, ["DOWN"] = 173, + ["NENTER"] = 201, ["N4"] = 108, ["N5"] = 60, ["N6"] = 107, ["N7"] = 117, ["N8"] = 61, ["N9"] = 118, ["N+"] = 96, ["N-"] = 97 + } + return Keys[key] +end + +GB.Functions.GetPlayerData() = function(source) -- get all data from the database for the player + return GB.GetPlayerData +end + +--// ADMIN [BASIC] \\-- +GB.Functions.DeleteVehicle = function(vehicle) + SetEntityAsMissionEntity(vehicle, false, true) + DeleteVehicle(vehicle) +end + +GB.Functions.GetVehicleDirection = function() + local src = PlayerPedId() + local srcCoords = GetEntityCoords(src) + local inDirection = GetOffsetFromEntityInWorldCoords(src, 0, 10, 0) + local rayHandle = StartShapeTestRay(srcCoords, inDirection, 10, src, 0) + local numRayHandle, hit, endCoords, surfaceNormal, entityHit = GetShapeTestResult(rayHandle) + + if hit == 1 and GetEntityType(entityHit) == 2 then + return entityHit + end + + return nil +end + +GB.Functions.DeleteObject = function(obj) + SetEntityAsMissionEntity(obj, false, true) + DeleteObject(obj) +end + +GB.Functions.GetClosestPlayer = function(coords) + local players = GB.Functions.GetPlayers() + local closestDistance = -1 + local closestPlayer = -1 + local coords = coords + local usePlayerPed = false + local src = PlayerPedId() + local srcID = PlayerId() + + if coords == nil then + usePlayerPed = true + coords = GetEntityCoords(src) + end + + for i = 1, #players, 1 do + local target = GetPlayerPed(players[i]) + + if not usePlayerPed() or (usePlayerPed and players[i] ~= PlayerId) then + local targetCoords = GetEntityCoords(target) + local distance = GetDistanceBetweenCoords(targetCoords, coords.x, coords.y, coords.z, true) + + if closestDistance == -1 or closestDistance > distance then + closestPlayer = players[i] + closestDistance = distance + end + end + end + return closestPlayer, closestDistance + +end + +--// CALLBACKS \\-- +GB.Functions.TriggerServerCallback = function(name, cb, ...) + GB.ServerCallbacks[GB.CurrentRequestId] = cb + + TriggerServerEvent('gb-core:server:triggerServerCallback', name, GB.CurrentRequestId, ...) + + if GB.CurrentRequestId < 65535 then + GB.CurrentRequestId = GB.CurrentRequestId + 1 + else + GB.CurrentRequestId = 0 + end +end + +GB.Functions.GetPlayers = function() + local MaxPlayer = 120 + local players = {} + + for i = 0, MaxPlayer, 1 do + local src = GetPlayerPed(i) + if DoesEntityExist(src) then + table.insert(players, i) + end + end + return players +end + +RegisterNetEvent('gb-core:client:serverCallback') +AddEventHandler('gb-core:client:serverCallback', function(requestId, ...) + GB.ServerCallbacks[requestId](...) + GB.ServerCallbacks[requestId] = nil +end) + +--// OTHER \\-- +RegisterNetEvent('gb-setCharacterData') +AddEventHandler('gb-setCharacterData', function(Player) + pData = Player +end) \ No newline at end of file diff --git a/fxmanifest.lua b/fxmanifest.lua index 76d17a9..4419d3a 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -8,7 +8,8 @@ version '0.0.1' -- dependency 'ghmattimysql' client_scripts { - 'core/cl_core.lua' + 'core/cl_core.lua', + 'events/cl_events.lua' } server_scripts { -- 2.49.1