💻Installation

Dependencies

QBCore

You will need the latest version of qb-core.

  • Extract the contents of the archive to your resources folder.

  • Start the resource near the top of your resources in your server.cfg.

INTERACT-SOUND

You will need the latest version of interact-sound.

  • Extract the contents of the archive to your resources folder.

  • Start the resource near the top of your resources in your server.cfg.


Inventory setup

QB-INVENTORY or PS-INVENTORY
  • 1 - Paste the code below in qb-core/shared/items.lua

   zatpc                            = { name = 'zatpc',                  label = 'Gaming Setup',                        weight = 1,         type = 'item',      image = 'zatpc.png',                           unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Gaming Setup' },
   zatminingrack                    = { name = 'zatminingrack',          label = 'Mining Rack',                         weight = 1,         type = 'item',      image = 'zatminingrack.png',                   unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Metal Rack with 10 GPU slots' },   
   zatgpu                           = { name = 'zatgpu',                 label = 'GPU',                                 weight = 1,         type = 'item',      image = 'zatgpu.png',                          unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'GPU' },
   zatcpu                           = { name = 'zatcpu',                 label = 'CPU',                                 weight = 1,         type = 'item',      image = 'zatcpu.png',                          unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'CPU' },
   zatps                            = { name = 'zatps',                  label = 'Power Supply',                        weight = 1,         type = 'item',      image = 'zatps.png',                           unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Power Supply' },
   zatmb                            = { name = 'zatmb',                  label = 'Mother Board',                        weight = 1,         type = 'item',      image = 'zatmb.png',                           unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Mother Board' },
   zatmodem                         = { name = 'zatmodem',               label = 'Modem',                               weight = 1,         type = 'item',      image = 'zatmodem.png',                        unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Modem' },
   zatbaskets                       = { name = 'zatbaskets',             label = 'Small Wicker Basket',                 weight = 1,         type = 'item',      image = 'zatbaskets.png',                      unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Wicker Basket used for storage.' },
   zatbasketm                       = { name = 'zatbasketm',             label = 'Wicker Basket',                       weight = 1,         type = 'item',      image = 'zatbasketm.png',                      unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Wicker Basket used for storage.' },
   zatminingfan                     = { name = 'zatminingfan',           label = 'GPU Rack Cooler',                         weight = 100,       type = 'item',      image = 'zatminingfan.png',                    unique = true, useable = true,     shouldClose = true,    combinable = nil,   description = 'Fan - 60 and 120 RPM...' },
  • 2 - Paste the code below in qb/ps-inventory/html/js/app.js

    case "zatgpu":
        return `<p>Type: ${itemData.info.type}</p>
                <p>Performance:${itemData.info.performance}%</p>
                <p>Freq:${itemData.info.hz}Ghz</p>`;  
     case "zatcpu":
         return `<p>Type: ${itemData.info.type}</p>
                 <p>Performance:${itemData.info.performance}%</p>`;  
     case "zatmb":
          return `<p>Type: ${itemData.info.type}</p>
                  <p>Performance:${itemData.info.performance}%</p>`;  
    case "zatps":
          return `<p>Type: ${itemData.info.type}</p>
                  <p>Performance:${itemData.info.performance}%</p>`;  
  • 3 - Copy the images from [images] and paste them into qb/ps-inventory/html/images.

OX-INVENTORY
  • 1 - Paste the code below under ox_inventory/data/items.lua

	["zatpc"] = {
		label = "Gaming Setup",
		weight = 1,
		stack = false,
		close = true,
		description = "Gaming Setup",
		client = {
			image = "zatpc.png",
		}
	},
	["zatminingrack"] = {
		label = "Mining Rack",
		weight = 1,
		stack = false,
		close = true,
		description = "Metal Rack with 10 GPU slots",
		client = {
			image = "zatminingrack.png",
		}
	},
	["zatgpu"] = {
		label = "GPU",
		weight = 1,
		stack = false,
		close = true,
		description = "GPU",
		client = {
			image = "zatgpu.png",
		}
	},
	["zatcpu"] = {
		label = "CPU",
		weight = 1,
		stack = false,
		close = true,
		description = "CPU",
		client = {
			image = "zatcpu.png",
		}
	},
	["zatps"] = {
		label = "Power Supply",
		weight = 1,
		stack = false,
		close = true,
		description = "Power Supply",
		client = {
			image = "zatps.png",
		}
	},
	["zatmb"] = {
		label = "Mother Board",
		weight = 1,
		stack = false,
		close = true,
		description = "Mother Board",
		client = {
			image = "zatmb.png",
		}
	},
	["zatmodem"] = {
		label = "Modem",
		weight = 1,
		stack = false,
		close = true,
		description = "Modem",
		client = {
			image = "zatmodem.png",
		}
	},
	["zatbaskets"] = {
		label = "Small Wicker Basket",
		weight = 1,
		stack = false,
		close = true,
		description = "Wicker Basket used for storage.",
		client = {
			image = "zatbaskets.png",
		}
	},
	["zatbasketm"] = {
		label = "Wicker Basket",
		weight = 1,
		stack = false,
		close = true,
		description = "Wicker Basket used for storage.",
		client = {
			image = "zatbasketm.png",
		}
	},
	["zatminingfan"] = {
		label = "Rack Cooler",
		weight = 100,
		stack = false,
		close = true,
		description = "Fan - 60 and 120 RPM...",
		client = {
			image = "zatresfan.png",
		}
	},
  • 2 - Paste the code below into ox_inventory/modules/items/client.lua

local MiningProps = {
	["zatpc"]           = {model = 'prop_gaming_table'},
    ["zatminingrack"]   = {model = 'prop_mining_rack'},
    ["zatminingfan"]    = {model = 'prop_mining_fan'},
    ["zatbaskets"]      = {model = 'prop_basket_s'},
    ["zatbasketm"]      = {model = 'prop_basket_m'},
}

Item('zatpc', function(data, slot)
	ox_inventory:useItem(data, function(data)
		if data then
			itemInfo= {}
			TriggerEvent("zat-desktop:client:UseItem", "zatpc", MiningProps["zatpc"].model, itemInfo)
			TriggerServerEvent("zat-desktop:server:RemoveItemOx", slot, nil)
		end
	end)
end)

Item('zatminingrack', function(data, slot)
	ox_inventory:useItem(data, function(data)
		if data then
			itemInfo= {}
			TriggerEvent("zat-desktop:client:UseItem", "zatminingrack", MiningProps["zatminingrack"].model, itemInfo)
			TriggerServerEvent("zat-desktop:server:RemoveItemOx", slot, nil)
		end
	end)
end)

Item('zatminingfan', function(data, slot)
	ox_inventory:useItem(data, function(data)
		if data then
			itemInfo= {}
			TriggerEvent("zat-desktop:client:UseItem", "zatminingfan", MiningProps["zatminingfan"].model, itemInfo)
			TriggerServerEvent("zat-desktop:server:RemoveItemOx", slot, nil)
		end
	end)
end)

Item('zatbaskets', function(data, slot)
	ox_inventory:useItem(data, function(data)
		if data then
			itemInfo= {}
			TriggerEvent("zat-desktop:client:UseItem", "zatbaskets", MiningProps["zatbaskets"].model, itemInfo)
			TriggerServerEvent("zat-desktop:server:RemoveItemOx", slot, nil)
		end
	end)
end)

Item('zatbasketm', function(data, slot)
	ox_inventory:useItem(data, function(data)
		if data then
			itemInfo= {}
			TriggerEvent("zat-desktop:client:UseItem", "zatbasketm", MiningProps["zatbasketm"].model, itemInfo)
			TriggerServerEvent("zat-desktop:server:RemoveItemOx", slot, nil)
		end
	end)
end)
  • 3- Copy the images from [images] and paste them into ox_inventory/web/images.

QS-INVENTORY
  • 1- Add the code below into qs-inventory/shared/items.lua:

['zatpc']                  = {
        ['name'] = 'zatpc',
        ['label'] = 'Gaming Setup',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatpc.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatminingrack']                  = {
        ['name'] = 'zatminingrack',
        ['label'] = 'Mining Rack',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatminingrack.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatgpu']                  = {
        ['name'] = 'zatgpu',
        ['label'] = 'GPU',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatgpu.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatcpu']                  = {
        ['name'] = 'zatcpu',
        ['label'] = 'CPU',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatcpu.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatps']                  = {
        ['name'] = 'zatps',
        ['label'] = 'Power Supply',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatps.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatmb']                  = {
        ['name'] = 'zatmb',
        ['label'] = 'Mother Board',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatmb.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatmodem']                  = {
        ['name'] = 'zatmodem',
        ['label'] = 'Silent Fan',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatmodem.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatbaskets']                  = {
        ['name'] = 'zatbaskets',
        ['label'] = 'Small Wicker Basket',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatbaskets.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatbasketm']                  = {
        ['name'] = 'zatbasketm',
        ['label'] = 'Wicker Basket',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatbasketm.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
    ['zatminingfan']                  = {
        ['name'] = 'zatminingfan',
        ['label'] = 'GPU Rack Cooler',
        ['weight'] = 0,
        ['type'] = 'item',
        ['image'] = 'zatminingfan.png',
        ['unique'] = true,
        ['useable'] = true,
        ['shouldClose'] = false,
        ['combinable'] = nil,
        ['description'] = '...'
    },
  • 2 - Paste the code below into qs-inventory/server/custom/misc/CreateUseableItem.lua

local MiningProps = {
	["zatpc"]           = {model = 'prop_gaming_table'},
    ["zatminingrack"]   = {model = 'prop_mining_rack'},
    ["zatminingfan"]    = {model = 'prop_mining_fan'},
    ["zatbaskets"]      = {model = 'prop_basket_s'},
    ["zatbasketm"]      = {model = 'prop_basket_m'},
}

CreateUsableItem('zatpc', function(source, item)
    local src = source
    itemInfo= {}
    TriggerClientEvent("zat-desktop:client:UseItem", src, "zatpc", MiningProps["zatpc"].model, itemInfo)
    exports['qs-inventory']:RemoveItem(src, "zatpc", 1)
end)

CreateUsableItem('zatminingrack', function(source, item)
    local src = source
    itemInfo= {}
    TriggerClientEvent("zat-desktop:client:UseItem", src, "zatminingrack", MiningProps["zatminingrack"].model, itemInfo)
    exports['qs-inventory']:RemoveItem(src, "zatminingrack", 1)
end)

CreateUsableItem('zatminingfan', function(source, item)
    local src = source
    itemInfo= {}
    TriggerClientEvent("zat-desktop:client:UseItem", src, "zatminingfan", MiningProps["zatminingfan"].model, itemInfo)
    exports['qs-inventory']:RemoveItem(src, "zatminingfan", 1)
end)

CreateUsableItem('zatbaskets', function(source, item)
    local src = source
    itemInfo= {}
    TriggerClientEvent("zat-desktop:client:UseItem", src, "zatbaskets", MiningProps["zatbaskets"].model, itemInfo)
    exports['qs-inventory']:RemoveItem(src, "zatbaskets", 1)
end)

CreateUsableItem('zatbasketm', function(source, item)
    local src = source
    itemInfo= {}
    TriggerClientEvent("zat-desktop:client:UseItem", src, "zatbasketm", MiningProps["zatbasketm"].model, itemInfo)
    exports['qs-inventory']:RemoveItem(src, "zatbasketm", 1)
end)
  • Add the code below to qs-inventory/config/metadata.js

    } else if (itemData.name == "zatgpu") {
                $(".item-info-title").html("<p>" + label + "</p>");
                $(".item-info-description").html(
                    "<p><strong>Type: </strong><span>" +
                    itemData.info.type +
                    "</span></p><p><strong>Performance: </strong><span>" +
                    itemData.info.performance +
                    "</span></p><p><strong>Freq: </strong><span>" +
                    itemData.info.hz +
                    "</span></p>"
                );
            } else if (itemData.name == "zatcpu") {
                $(".item-info-title").html("<p>" + label + "</p>");
                $(".item-info-description").html(
                    "<p><strong>Type: </strong><span>" +
                    itemData.info.type +
                    "</span></p><p><strong>Performance: </strong><span>" +
                    itemData.info.performance +
                    "</span></p>"
                );
            } else if (itemData.name == "zatmb") {
                $(".item-info-title").html("<p>" + label + "</p>");
                $(".item-info-description").html(
                    "<p><strong>Type: </strong><span>" +
                    itemData.info.type +
                    "</span></p><p><strong>Performance: </strong><span>" +
                    itemData.info.performance +
                    "</span></p>"
                );
            } else if (itemData.name == "zatps") {
                $(".item-info-title").html("<p>" + label + "</p>");
                $(".item-info-description").html(
                    "<p><strong>Type: </strong><span>" +
                    itemData.info.type +
                    "</span></p><p><strong>Performance: </strong><span>" +
                    itemData.info.performance +
                    "</span></p>"
                );
  • Copy the images from [images] and paste them into qs-inventory/html/images.


SQL

Import the sql files from [SQLs] folder into your database.


DRONE SOUND

copy the drone.ogg file into interact-sound/client/html/sounds

ENSURE RESOURCES

Last updated