local QBCore = exports['qb-core']:GetCoreObject() local dloc = { {coords = vector4(282.48, -1814.32, 27.23, 145.11)}, {coords = vector4(-296.11, -1300.65, 31.31, 270.87)}, {coords = vector4(-36.64, -1492.04, 31.22, 151.91)}, {coords = vector4(282.48, -1814.32, 27.23, 232.19)}, {coords = vector4(54.54, -1873.22, 22.81, 131.47)}, {coords = vector4(-269.34, -2437.25, 6.40, 252.67)}, {coords = vector4(269.19, -3248.55, 5.79, 252.67)}, {coords = vector4(632.94, -3015.44, 7.34, 3.44)}, {coords = vector4(1049.55, -2427.88, 30.30, 79.52)}, {coords = vector4(853.16, -2207.32, 30.68, 284.88)}, {coords = vector4(903.10, -1721.98, 32.25, 168.71)}, {coords = vector4(1289.30, -1710.49, 55.48, 208.57)}, {coords = vector4(1412.01, -1490.53, 60.66, 132.46)}, {coords = vector4(734.26, -1311.26, 27.01, 102.99)}, {coords = vector4(1231.60, -1083.06, 38.53, 102.99)}, {coords = vector4(1143.55, -1000.19, 45.32, 257.05)}, {coords = vector4(1264.82, -702.87, 64.72, 257.05)}, {coords = vector4(1119.65, -639.76, 56.81, 284.53)}, {coords = vector4(1129.59, -462.59, 66.49, 79.23)}, {coords = vector4(42.80, -811.45, 31.43, 79.23)}, {coords = vector4(-509.48, -1001.66, 23.55, 79.23)}, {coords = vector4(-830.97, -862.41, 20.69, 13.72)}, {coords = vector4(-1320.26, -1177.34, 4.89, 74.29)}, {coords = vector4(-1097.63, -1673.24, 8.40, 136.51)}, {coords = vector4(-1147.61, -1452.10, 4.60, 51.50)}, {coords = vector4(-1241.69, -1208.39, 8.52, 107.56)}, {coords = vector4(-1876.92, -584.44, 11.85, 329.54)}, {coords = vector4(-1303.94, -441.39, 35.22, 128.73)}, {coords = vector4(-1705.48, -433.46, 42.17, 128.73)}, {coords = vector4(-1305.99, 336.35, 65.50, 35.13)}, {coords = vector4(-741.80, 484.84, 109.47, 110.85)}, {coords = vector4(-409.57, 341.49, 108.91, 270.45)}, {coords = vector4(-126.44, 588.18, 204.71, 8.12)}, {coords = vector4(211.42, -101.42, 73.28, 174.10)}, {coords = vector4(490.61, -95.04, 66.44, 273.57)}, {coords = vector4(387.19, -993.59, 29.42, 273.57)}, {coords = vector4(-500.47, -712.37, 33.21, 273.57)}, {coords = vector4(2572.20, 479.97, 108.68, 80.27)}, {coords = vector4(-430.10, 1205.41, 325.76, 169.25)}, {coords = vector4(-126.06, 1896.58, 197.33, 169.25)}, {coords = vector4(-2521.08, 2310.31, 33.22, 276.87)}, {coords = vector4(1129.01, 2125.14, 55.55, 276.87)}, {coords = vector4(1546.64, 2166.56, 78.72, 100.37)}, {coords = vector4(404.34, 2584.54, 43.52, 100.37)}, {coords = vector4(180.15, 2792.99, 45.66, 283.04)}, {coords = vector4(287.67, 2843.89, 44.70, 118.41)}, {coords = vector4(2030.23, 3184.42, 45.13, 146.06)}, {coords = vector4(2175.33, 3321.92, 46.13, 214.53)}, {coords = vector4(2389.61, 3340.98, 47.34, 214.52)}, {coords = vector4(1716.25, 3295.08, 41.26, 196.21)}, {coords = vector4(1779.38, 3640.83, 34.50, 24.16)}, {coords = vector4(1894.59, 3715.34, 32.75, 127.89)}, {coords = vector4(1861.90, 3857.15, 36.27, 293.45)}, {coords = vector4(996.38, 3575.07, 34.61, 328.30)}, {coords = vector4(387.45, 3584.73, 33.29, 351.41)}, {coords = vector4(68.08, 3693.22, 40.66, 63.98)}, {coords = vector4(15.55, 3688.70, 39.81, 230.89)}, {coords = vector4(2566.59, 4283.34, 41.97, 348.53)}, {coords = vector4(2570.82, 4667.95, 34.08, 135.30)}, {coords = vector4(2882.05, 4511.72, 48.02, 66.58)}, {coords = vector4(2243.78, 5154.02, 57.89, 139.42)}, {coords = vector4(1642.91, 4846.08, 45.51, 109.83)}, {coords = vector4(1308.87, 4362.17, 41.55, 256.01)}, {coords = vector4(-1090.27, 4940.57, 214.13, 256.01)}, {coords = vector4(-552.37, 5348.37, 74.76, 62.18)}, {coords = vector4(-679.02, 5834.27, 17.33, 137.18)}, {coords = vector4(-481.97, 6276.93, 13.35, 323.16)}, {coords = vector4(-24.92, 6472.60, 31.49, 144.42)}, {coords = vector4(36.03, 6549.18, 31.43, 287.85)}, {coords = vector4(406.08, 6526.43, 27.75, 97.45)}, {coords = vector4(1522.39, 6329.23, 24.61, 331.71)}, {coords = vector4(1741.39, 6419.62, 35.04, 331.71)}, {coords = vector4(3426.72, 5174.42, 7.40, 112.64)}, {coords = vector4(2525.99, 2586.62, 38.94, 257.02)}, {coords = vector4(2696.29, 1664.44, 24.52, 70.12)}, {coords = vector4(106.24, -1280.32, 29.24, 350.89)}, {coords = vector4(223.98, 121.53, 102.76, 259.68)}, {coords = vector4(102.19, -255.02, 50.05, 83.59)}, } lib.callback.register('md-drugs:server:getDealers', function(data) local check = MySQL.query.await('SELECT * FROM dealers', {}) local loc = json.encode({x = 899.98, y = -2603.24, z = 6.11, h = 176.12 }) if not check[1] then MySQL.insert('INSERT INTO dealers SET name = ?, coords = ?, time = ?, createdby = ?', {'MD', loc, 'any', 'code Newb'}) Wait(2000) local check2 = MySQL.query.await('SELECT * FROM dealers', {}) return check2 else return check end end) local DeliveryItems = { { item = "weed_brick", minrep = 0, payout = {min = 10, max = 50}}, { item = "coke_brick", minrep = 0, payout = {min = 10, max = 50}}, } lib.callback.register('md-drugs:server:GetDeliveryItem', function(data) local src = source local Player = getPlayer(src) local itemnum = math.random(1, #DeliveryItems) local item = DeliveryItems[itemnum].item local amount = math.random(1,4) local check = MySQL.query.await('SELECT * FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) local locnum = math.random(1, #dloc) local coord = json.encode({ x = dloc[locnum].coords.x, y = dloc[locnum].coords.y, z = dloc[locnum].coords.z , w = dloc[locnum].coords.w }) if not check[1] then MySQL.insert('INSERT INTO deliveriesdealer SET cid = ?, itemdata = ?, timestart = ?, maxtime = ?, location = ?', {Player.PlayerData.citizenid, json.encode({item = item, amount = amount}), os.time(), os.time() + (15 * 60), coord }) AddItem(Player.PlayerData.source, item, amount) return true, item, amount, coord else local time = os.time() local timeout = math.floor(os.difftime(time, check[1].maxtime) / 60) if timeout > 15 then MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) Notifys(src, 'You Failed To Make It In Time!', 'error' ) return false end Notifys(src,'You Already Have A Delivery To Make', 'error' ) return false, item, amount, coord end end) RegisterNetEvent('md-drugs:server:giveDeliveryItems', function(item, amount) local src = source local Player = getPlayer(src) local check = MySQL.query.await('SELECT * FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) if not check[1] then return end local time = os.time() local timeout = math.floor(os.difftime(time, check[1].maxtime) / 60) local itemData = json.decode(check[1].itemdata) if timeout >= 15 then MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) Notifys(source, 'You Failed To Make It In Time!', 'error' ) return end if item ~= itemData.item then return end if amount ~= itemData.amount then return end if RemoveItem(src, item, amount) then for k, v in pairs (DeliveryItems) do if v.item == item then local income = math.random(v.payout.min, v.payout.max) Player.Functions.AddMoney('cash', income) AddRep(src, 'dealerrep') end end MySQL.query.await('DELETE FROM deliveriesdealer WHERE cid = ?', {Player.PlayerData.citizenid}) end end) lib.addCommand("newdealer", { help = "Place a dealer (Admin Only)", params = { { name = "name", help = "Dealer Name", type = "string" }, { name = "min", help = "Minimum Time", type = "number" }, { name = "max", help = "Maximum Time", type = "number" } }, restricted = "admin" }, function(source, args) local ped = GetPlayerPed(source) local coords = GetEntityCoords(ped) local Player = getPlayer(source) if not Player then return end local dealerName = args.name local pos = json.encode({x = coords.x, y = coords.y, z = coords.z}) local result = MySQL.scalar.await('SELECT name FROM dealers WHERE name = ?', { dealerName }) if result then return Notifys(source,"Already Exists", "error") end MySQL.insert('INSERT INTO dealers (name, coords, time, createdby) VALUES (?, ?, ?, ?)', { dealerName, pos, 'nil', Player.PlayerData.citizenid }, function() QBConfig.Dealers[dealerName] = { name = dealerName, coords = { x = coords.x, y = coords.y, z = coords.z, h = GetEntityHeading(ped) }, } TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers) end) end) lib.addCommand("deletedealer", { help = "Delete a dealer (Admin Only)", params = { { name = "name", help = "Dealer Name", type = "string" } }, restricted = 'group.admin' }, function(source, args) local dealerName = args.name local result = MySQL.scalar.await('SELECT * FROM dealers WHERE name = ?', { dealerName }) if result then MySQL.query('DELETE FROM dealers WHERE name = ?', { dealerName }) QBConfig.Dealers[dealerName] = nil TriggerClientEvent('md-drugs:client:RefreshDealers', -1, QBConfig.Dealers) TriggerClientEvent('QBCore:Notify', source, "Dealer Deleted", "success") else TriggerClientEvent('QBCore:Notify', source, "Who You Tryna Delete", "error") end end)