forked from Simnation/Main
Merge branch 'master' of https://git.evolution-state-life.de/Evolution-State-Life/Main
This commit is contained in:
commit
42eed2b920
4 changed files with 121 additions and 4 deletions
9
resources/[carscripts]/nordi_fuelinfo/fxmanifest.lua
Normal file
9
resources/[carscripts]/nordi_fuelinfo/fxmanifest.lua
Normal file
|
@ -0,0 +1,9 @@
|
|||
fx_version 'cerulean'
|
||||
game 'gta5'
|
||||
|
||||
author 'YourName'
|
||||
description 'Fuel info command for lc_fuel system'
|
||||
|
||||
server_script 'server/server.lua'
|
||||
|
||||
dependency 'lc_fuel' -- Ensures lc_fuel loads first
|
21
resources/[carscripts]/nordi_fuelinfo/server/server.lua
Normal file
21
resources/[carscripts]/nordi_fuelinfo/server/server.lua
Normal file
|
@ -0,0 +1,21 @@
|
|||
QBCore.Commands.Add("fuel", "Check current vehicle fuel level", {}, false, function(source, args)
|
||||
local player = QBCore.Functions.GetPlayer(source)
|
||||
if not player then return end
|
||||
|
||||
local ped = GetPlayerPed(source)
|
||||
local vehicle = GetVehiclePedIsIn(ped, false)
|
||||
|
||||
if vehicle == 0 then
|
||||
TriggerClientEvent('QBCore:Notify', source, "You must be in a vehicle", "error")
|
||||
return
|
||||
end
|
||||
|
||||
local plate = QBCore.Functions.GetPlate(vehicle)
|
||||
|
||||
-- lc_fuel stores fuel in vehicle metadata
|
||||
local fuel = exports['lc_fuel']:GetFuel(vehicle) or 0
|
||||
local roundedFuel = math.floor(fuel + 0.5)
|
||||
|
||||
TriggerClientEvent('QBCore:Notify', source, "Fuel: "..roundedFuel.."%", "success")
|
||||
end, "user")
|
||||
|
|
@ -24,7 +24,9 @@ server_scripts {
|
|||
"server/events.lua",
|
||||
"server/functions.lua",
|
||||
"server/main.lua",
|
||||
"server/misc/*.lua"
|
||||
"server/misc/*.lua",
|
||||
"server/callbacks.lua"
|
||||
|
||||
}
|
||||
|
||||
client_scripts {
|
||||
|
|
|
@ -1,6 +1,43 @@
|
|||
local positions = {}
|
||||
local presets = {}
|
||||
local positionsFile = 'positions.json'
|
||||
local presetsFile = 'presets.json'
|
||||
|
||||
-- Load saved positions from JSON file
|
||||
local function LoadPositions()
|
||||
local file = LoadResourceFile(GetCurrentResourceName(), 'json/' .. positionsFile)
|
||||
if file then
|
||||
positions = json.decode(file) or {}
|
||||
end
|
||||
end
|
||||
|
||||
-- Load saved presets from JSON file
|
||||
local function LoadPresets()
|
||||
local file = LoadResourceFile(GetCurrentResourceName(), 'json/' .. presetsFile)
|
||||
if file then
|
||||
presets = json.decode(file) or {}
|
||||
end
|
||||
end
|
||||
|
||||
-- Save positions to JSON file
|
||||
local function SavePositions()
|
||||
SaveResourceFile(GetCurrentResourceName(), 'json/' .. positionsFile, json.encode(positions), -1)
|
||||
end
|
||||
|
||||
-- Save presets to JSON file
|
||||
local function SavePresets()
|
||||
SaveResourceFile(GetCurrentResourceName(), 'json/' .. presetsFile, json.encode(presets), -1)
|
||||
end
|
||||
|
||||
-- Load data when resource starts
|
||||
CreateThread(function()
|
||||
LoadPositions()
|
||||
LoadPresets()
|
||||
end)
|
||||
|
||||
-- Weapon sync
|
||||
local attachedWeapons = {}
|
||||
|
||||
-- Track player weapons
|
||||
RegisterNetEvent('force-sling:server:syncWeapons')
|
||||
AddEventHandler('force-sling:server:syncWeapons', function(weaponData, action)
|
||||
local src = source
|
||||
|
@ -13,11 +50,59 @@ AddEventHandler('force-sling:server:syncWeapons', function(weaponData, action)
|
|||
end
|
||||
end
|
||||
|
||||
-- Broadcast to all players except source
|
||||
TriggerClientEvent('force-sling:client:syncWeapons', -1, src, weaponData, action)
|
||||
end)
|
||||
|
||||
-- Clean up when player disconnects
|
||||
-- Callbacks
|
||||
lib.callback.register('force-sling:callback:getCachedPositions', function(source)
|
||||
return positions
|
||||
end)
|
||||
|
||||
lib.callback.register('force-sling:callback:getCachedPresets', function(source)
|
||||
return presets
|
||||
end)
|
||||
|
||||
lib.callback.register('force-sling:callback:isPlayerAdmin', function(source)
|
||||
local src = source
|
||||
-- Add your admin check logic here
|
||||
-- Example for QBCore:
|
||||
-- local Player = QBCore.Functions.GetPlayer(src)
|
||||
-- return Player.PlayerData.admin or false
|
||||
|
||||
-- For testing, returning true
|
||||
return {isAdmin = true}
|
||||
end)
|
||||
|
||||
lib.callback.register('force-sling:callback:resetWeaponPositions', function(source, weapon)
|
||||
local src = source
|
||||
if weapon then
|
||||
positions[weapon] = nil
|
||||
else
|
||||
positions = {}
|
||||
end
|
||||
SavePositions()
|
||||
return positions
|
||||
end)
|
||||
|
||||
RegisterNetEvent('force-sling:server:saveWeaponPosition')
|
||||
AddEventHandler('force-sling:server:saveWeaponPosition', function(position, rotation, weapon, weaponName, boneId, isPreset)
|
||||
local src = source
|
||||
local data = {
|
||||
coords = position,
|
||||
rot = rotation,
|
||||
boneId = boneId
|
||||
}
|
||||
|
||||
if isPreset then
|
||||
presets[weaponName] = data
|
||||
SavePresets()
|
||||
else
|
||||
positions[weaponName] = data
|
||||
SavePositions()
|
||||
end
|
||||
end)
|
||||
|
||||
-- Cleanup on player drop
|
||||
AddEventHandler('playerDropped', function()
|
||||
local src = source
|
||||
if attachedWeapons[src] then
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue