Merge pull request 'feature/client-events' (#1) from feature/client-events into main

Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
2025-11-13 01:18:15 +00:00
4 changed files with 190 additions and 0 deletions

19
core/cl_core.lua Normal file
View File

@@ -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)

35
core/sv_core.lua Normal file
View File

@@ -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)

118
events/cl_events.lua Normal file
View File

@@ -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)

18
fxmanifest.lua Normal file
View File

@@ -0,0 +1,18 @@
fx_version 'cerulean'
games 'gta5'
author 'gb-framework'
description 'n/a'
version '0.0.1'
-- dependency 'ghmattimysql'
client_scripts {
'core/cl_core.lua',
'events/cl_events.lua'
}
server_scripts {
'core/sv_core.lua'
}