forked from Simnation/Main
59 lines
1.8 KiB
Lua
59 lines
1.8 KiB
Lua
![]() |
local function SafeSavePosition(filePath, data)
|
||
|
local success, error = pcall(function()
|
||
|
local fileData = json.decode(LoadResourceFile(GetCurrentResourceName(), filePath)) or {}
|
||
|
fileData = type(fileData) == 'table' and fileData or {}
|
||
|
|
||
|
for k, v in pairs(data) do
|
||
|
fileData[k] = v
|
||
|
end
|
||
|
|
||
|
return SaveResourceFile(GetCurrentResourceName(), filePath, json.encode(fileData, { indent = true }), -1)
|
||
|
end)
|
||
|
|
||
|
if not success then
|
||
|
Debug("error", "Failed to save position data: " .. tostring(error))
|
||
|
return false
|
||
|
end
|
||
|
return true
|
||
|
end
|
||
|
|
||
|
--- @param coords table The coordinates of the weapon.
|
||
|
--- @param rot table The rotation of the weapon.
|
||
|
--- @param weapon string The weapon model.
|
||
|
--- @param weaponName string The weapon name.
|
||
|
--- @param boneId number The bone ID to attach the weapon to.
|
||
|
--- @param isPreset boolean Whether the position is a preset.
|
||
|
--- @return nil
|
||
|
RegisterNetEvent("force-sling:server:saveWeaponPosition", function(coords, rot, weapon, weaponName, boneId, isPreset)
|
||
|
Debug("info", "Saving weapon position for weapon: " .. weaponName .. " isPreset: " .. tostring(isPreset))
|
||
|
|
||
|
if not isPreset then
|
||
|
local positions = {
|
||
|
[GetPlayerIdentifierByType(source, "license")] = {
|
||
|
[weaponName] = {
|
||
|
coords = coords,
|
||
|
rot = rot,
|
||
|
boneId = boneId
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if SafeSavePosition("json/positions.json", positions) then
|
||
|
Debug("info",
|
||
|
"Weapon position saved for player: " .. GetPlayerIdentifierByType(source, "license") .. " weapon: " .. weaponName)
|
||
|
end
|
||
|
else
|
||
|
local presets = {
|
||
|
[weaponName] = {
|
||
|
coords = coords,
|
||
|
rot = rot,
|
||
|
boneId = boneId
|
||
|
}
|
||
|
}
|
||
|
|
||
|
if SafeSavePosition("json/presets.json", presets) then
|
||
|
Debug("info", "Weapon preset saved for weapon: " .. weaponName)
|
||
|
end
|
||
|
end
|
||
|
end)
|