From cebe404d42672748d8b398e3fa009e158506b41a Mon Sep 17 00:00:00 2001 From: Andyyy7666 <86536434+Andyyy7666@users.noreply.github.com> Date: Sun, 29 Oct 2023 11:20:33 +0100 Subject: [PATCH] feat: vehicle metadata --- database/vehicles.sql | 1 + server/vehicle.lua | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/database/vehicles.sql b/database/vehicles.sql index df585cb..c4ae6dd 100644 --- a/database/vehicles.sql +++ b/database/vehicles.sql @@ -8,6 +8,7 @@ CREATE TABLE IF NOT EXISTS `nd_vehicles` ( `stored` INT(11) DEFAULT '1', `impounded` INT(11) DEFAULT '0', `stolen` INT(11) DEFAULT '0', + `metadata` LONGTEXT DEFAULT '[]', PRIMARY KEY (`id`) USING BTREE, INDEX `owner` (`owner`) USING BTREE, CONSTRAINT `vehowner` FOREIGN KEY (`owner`) REFERENCES `nd_characters` (`charid`) ON UPDATE CASCADE ON DELETE CASCADE diff --git a/server/vehicle.lua b/server/vehicle.lua index c81c1ab..2f89ec0 100644 --- a/server/vehicle.lua +++ b/server/vehicle.lua @@ -52,7 +52,8 @@ local function getVehicleDatabaseInfo(vehicle) stored = stored, impounded = impounded, stolen = vehicle.stolen == 1, - available = not impounded and stored + available = not impounded and stored, + metadata = json.decode(vehicle.metadata) or {} } end @@ -79,7 +80,7 @@ function NDCore.getVehicle(entity) properties = state.props, locked = state.locked, hotwired = state.hotwired, - metadata = state.metadata, + metadata = state.metadata or {}, netId = NetworkGetNetworkIdFromEntity(entity) } @@ -145,6 +146,18 @@ function NDCore.getVehicle(entity) return true end + function self.setMetadata(key, value) + self.metadata[key] = value + if DoesEntityExist(entity) then + local state = Entity(self.entity).state + local metadata = state.metadata + metadata[key] = value + state.metadata = metadata + end + if not self.id or not self.owner then return end + MySQL.query("UPDATE nd_vehicles SET metadata = ? WHERE id = ?", {json.encode(self.metadata), self.id}) + end + if self.id and self.owner then spawnedPlayerVehicles[self.id] = self end