Merge branch 'ND-Framework:main' into fix-vehicle-metadata

This commit is contained in:
NotSomething0
2024-05-13 17:17:27 -05:00
committed by GitHub
4 changed files with 40 additions and 19 deletions

View File

@@ -2,7 +2,7 @@
author "Andyyy#7666" author "Andyyy#7666"
description "ND Framework Core" description "ND Framework Core"
version "2.1.2" version "2.2.9"
fx_version "cerulean" fx_version "cerulean"
game "gta5" game "gta5"

View File

@@ -15,7 +15,7 @@ local moneyActions = {
} }
lib.addCommand("setmoney", { lib.addCommand("setmoney", {
help = "Admin command, manage player money.", help = "Admin command, set a players money.",
restricted = "group.admin", restricted = "group.admin",
params = { params = {
{ {
@@ -164,7 +164,7 @@ lib.addCommand("setgroup", {
end) end)
lib.addCommand("skin", { lib.addCommand("skin", {
help = "Admin command, set player into character clothing menu.", help = "Admin command, show character clothing menu for player.",
restricted = "group.admin", restricted = "group.admin",
params = { params = {
{ {
@@ -178,7 +178,7 @@ lib.addCommand("skin", {
end) end)
lib.addCommand("character", { lib.addCommand("character", {
help = "Admin command, set player into character selection menu.", help = "Admin command, show character selection menu for player.",
restricted = "group.admin", restricted = "group.admin",
params = { params = {
{ {
@@ -262,7 +262,7 @@ lib.addCommand("pay", {
end) end)
lib.addCommand("unlock", { lib.addCommand("unlock", {
help = "Admin Command, force unlock vehicle.", help = "Admin Command, force unlock a vehicle.",
restricted = "group.admin", restricted = "group.admin",
}, function(source, args, raw) }, function(source, args, raw)
local ped = GetPlayerPed(source) local ped = GetPlayerPed(source)
@@ -293,7 +293,7 @@ lib.addCommand("unlock", {
end) end)
lib.addCommand("revive", { lib.addCommand("revive", {
help = "Admin command, revive player.", help = "Admin command, revive a player.",
restricted = "group.admin", restricted = "group.admin",
params = { params = {
{ {
@@ -433,7 +433,7 @@ lib.addCommand("unfreeze", {
end) end)
lib.addCommand("vehicle", { lib.addCommand("vehicle", {
help = "Admin command, unfreeze a player.", help = "Admin command, spawn a vehicle.",
restricted = "group.admin", restricted = "group.admin",
params = { params = {
{ {

View File

@@ -383,6 +383,7 @@ local function createCharacterTable(info)
self.groups[name] = nil self.groups[name] = nil
self.triggerEvent("ND:updateCharacter", removeCharacterFunctions(self), "groups") self.triggerEvent("ND:updateCharacter", removeCharacterFunctions(self), "groups")
TriggerEvent("ND:updateCharacter", self, "groups") TriggerEvent("ND:updateCharacter", self, "groups")
TriggerEvent("ND:groupRemoved", self, group)
lib.removePrincipal(self.source, ("group.%s"):format(name)) lib.removePrincipal(self.source, ("group.%s"):format(name))
return group return group
end end

View File

@@ -1,6 +1,7 @@
local ox_inventory local ox_inventory
local inventoryStarted = false local inventoryStarted = false
local spawnedPlayerVehicles = {} local spawnedPlayerVehicles = {}
local vehicleTypes = json.decode(GetResourceKvpString("ND_Core:vehTypes") or "[]")
NDCore.isResourceStarted("ox_inventory", function(started) NDCore.isResourceStarted("ox_inventory", function(started)
inventoryStarted = started inventoryStarted = started
@@ -8,16 +9,24 @@ NDCore.isResourceStarted("ox_inventory", function(started)
ox_inventory = exports.ox_inventory ox_inventory = exports.ox_inventory
end) end)
local function getVehicleType(model) local function getVehicleType(coords, model)
local tempVehicle = CreateVehicle(model, 0, 0, 0, 0, true, true) if vehicleTypes[model] then
return vehicleTypes[model]
end
local tempVehicle = CreateVehicle(model, coords.x, coords.y, coords.z-5.0, coords.w, true, false)
local time = os.time() local time = os.time()
while not DoesEntityExist(tempVehicle) and os.time()-time < 5 do Wait(5) end
while not DoesEntityExist(tempVehicle) and os.time()-time < 5 do Wait(0) end
if not DoesEntityExist(tempVehicle) then return end if not DoesEntityExist(tempVehicle) then return end
local entityType = GetVehicleType(tempVehicle)
local vehType = GetVehicleType(tempVehicle)
DeleteEntity(tempVehicle) DeleteEntity(tempVehicle)
return entityType
vehicleTypes[model] = vehType
SetResourceKvp("ND_Core:vehTypes", json.encode(vehicleTypes))
return vehType
end end
local function generatePlate() local function generatePlate()
@@ -99,6 +108,15 @@ function NDCore.getVehicle(entity)
DeleteEntity(entity) DeleteEntity(entity)
end end
-- remvoe vehicle from db.
function self.remove(keepEntity)
if not keepEntity and DoesEntityExist(entity) then
DeleteEntity(entity)
end
MySQL.query("DELETE FROM nd_vehicles WHERE id = ?", {self.id})
end
--- set vehicle properties --- set vehicle properties
---@param props table ---@param props table
function self.setProperties(props) function self.setProperties(props)
@@ -262,7 +280,7 @@ function NDCore.createVehicle(info)
end end
local model = info.model or properties.model local model = info.model or properties.model
local vehType = getVehicleType(model) local vehType = getVehicleType(spawnCoords, model)
if not vehType then if not vehType then
return Citizen.Trace("NDCore.createVehicle", "vehType not found") return Citizen.Trace("NDCore.createVehicle", "vehType not found")
end end
@@ -420,7 +438,8 @@ function NDCore.spawnOwnedVehicle(source, vehicleId, coords, heading)
if not player then return end if not player then return end
local vehicle = NDCore.getVehicleById(vehicleId) local vehicle = NDCore.getVehicleById(vehicleId)
if not vehicle or not vehicle.available or vehicle.owner ~= player.id then return end if not vehicle or vehicle.owner ~= player.id then return end
if not vehicle.available and not vehicle.impounded then return end
MySQL.query.await("UPDATE nd_vehicles SET stored = ? WHERE id = ?", {0, vehicleId}) MySQL.query.await("UPDATE nd_vehicles SET stored = ? WHERE id = ?", {0, vehicleId})
@@ -710,6 +729,11 @@ RegisterNetEvent("ND_Vehicles:takeVehicle", function(vehId, locations)
local vehicle = NDCore.getVehicleById(vehId) local vehicle = NDCore.getVehicleById(vehId)
local player = NDCore.getPlayer(src) local player = NDCore.getPlayer(src)
if not player or not vehicle or vehicle.owner ~= player.id then return end if not player or not vehicle or vehicle.owner ~= player.id then return end
local info = NDCore.spawnOwnedVehicle(src, vehicle.id, isParkingAvailable(locations))
if not info then return end
TriggerClientEvent("ND_Vehicles:blip", src, info.netId, true)
if vehicle.impounded then if vehicle.impounded then
local reclaimPrice = vehicle.metadata.impoundReclaimPrice or 200 local reclaimPrice = vehicle.metadata.impoundReclaimPrice or 200
if not player.deductMoney("bank", reclaimPrice, "Vehicle impound reclaim") then if not player.deductMoney("bank", reclaimPrice, "Vehicle impound reclaim") then
@@ -728,10 +752,6 @@ RegisterNetEvent("ND_Vehicles:takeVehicle", function(vehId, locations)
}) })
MySQL.query.await("UPDATE nd_vehicles SET impounded = ? WHERE id = ?", {0, vehicle.id}) MySQL.query.await("UPDATE nd_vehicles SET impounded = ? WHERE id = ?", {0, vehicle.id})
end end
local info = NDCore.spawnOwnedVehicle(src, vehicle.id, isParkingAvailable(locations))
if not info then return end
TriggerClientEvent("ND_Vehicles:blip", src, info.netId, true)
end) end)
lib.callback.register("ND_Vehicles:getOwnedVehicles", function(src) lib.callback.register("ND_Vehicles:getOwnedVehicles", function(src)