2026-04-14 17:41:39 +02:00

961 lines
41 KiB
JavaScript

const LV = {
RegisterCallback: (name, handler) => {
if (config.Framework.includes("qb")) {
FrameworkObject.Functions.CreateCallback(name, handler)
} else if (config.Framework.includes("esx")) {
FrameworkObject.RegisterServerCallback(name, handler)
}
},
Society: {
GetAccountMoney: (society) => {
if (config.Society.Script === "qb-old") {
return exports["qb-management"].GetAccount(society)
} else if (config.Society.Script === "qb-new") {
return exports["qb-banking"].GetAccountBalance(society)
}
},
RemoveMoney: (society, value) => {
if (config.Society.Script === "qb-old") {
return exports["qb-management"].RemoveMoney(society, value)
} else if (config.Society.Script === "qb-new") {
return exports["qb-banking"].RemoveMoney(society, value)
}
},
AddMoney: (society, value) => {
if (config.Society.Script === "qb-old") {
return exports["qb-management"].AddMoney(society, value)
} else if (config.Society.Script === "qb-new") {
return exports["qb-banking"].AddMoney(society, value)
}
}
},
GetPlayerIdentifier: (id) => {
let identifier = undefined
if (config.Framework.includes("qb")) {
const qPlayer = FrameworkObject.Functions.GetPlayer(id)
if (qPlayer) {
identifier = qPlayer.PlayerData.citizenid
} else {
identifier = "0"
}
} else {
const xPlayer = FrameworkObject.GetPlayerFromId(id)
if (xPlayer) {
identifier = xPlayer.identifier
} else {
identifier = "0"
}
}
return identifier
},
GetPlayerInventoryItems: async (online, id) => {
let items = []
for (let i = 0; i < Number(config.MaxInventorySlot); i++) {
items.push({
slot: i+1,
name: "",
icon: "",
count: 0
})
}
if (config.Inventory === "ox_inventory") {
if (!online) {
let result = await query(`
SELECT * FROM \`${config.Framework.includes("esx") ? "users" : "players"}\`
WHERE \`${config.Framework.includes("esx") ? "identifier" : "citizenid"}\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
const inventoryItems = JSON.parse(result.inventory)
if (inventoryItems.length > 0) {
inventoryItems.forEach(item => {
items[Number(item.slot) - 1].name = item.name
items[Number(item.slot) - 1].icon = `${item.name}.png`
items[Number(item.slot) - 1].count = item.count
})
}
}
} else if (config.Inventory === "qb-inventory") {
if (!online) {
let result = await query(`
SELECT * FROM \`players\`
WHERE \`citizenid\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
const inventoryItems = JSON.parse(result.inventory)
if (inventoryItems.length > 0) {
inventoryItems.forEach(item => {
const detailedItem = FrameworkObject.Shared.Items[item.name]
items[Number(item.slot) - 1].name = item.name
items[Number(item.slot) - 1].icon = detailedItem.image
items[Number(item.slot) - 1].count = item.amount
})
}
}
} else if (config.Inventory === "qs-inventory") {
if (!online) {
let result = await query(`
SELECT * FROM \`${config.Framework.includes("esx") ? "users" : "players"}\`
WHERE \`${config.Framework.includes("esx") ? "identifier" : "citizenid"}\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
const inventoryItems = JSON.parse(result.inventory)
if (inventoryItems.length > 0) {
inventoryItems.forEach(item => {
items[Number(item.slot) - 1].name = item.name
items[Number(item.slot) - 1].icon = `${item.name}.png`
items[Number(item.slot) - 1].count = item.amount
})
}
}
} else if (config.Inventory === "codem-inventory") {
if (!online) {
let result = await query(`
SELECT * FROM \`codem_new_inventory\`
WHERE \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
if (result.length === 0) return
result = result [0]
if (!result.inventory) return
const inventoryItems = JSON.parse(result.inventory)
Object.entries(inventoryItems).forEach(([slot, item]) => {
const detailedItem = exports['codem-inventory'].GetItemList()[item.name]
items[Number(slot) - 1].name = item.name
items[Number(slot) - 1].icon = detailedItem.image
items[Number(slot) - 1].count = item.amount
})
}
} else if (config.Inventory === "chezza-inventory") {
if (!online) {
let result = await query(`
select * from \`users\`
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
const inventoryItems = JSON.parse(result.inventory)
const loadoutItems = JSON.parse(result.loadout)
Object.entries(inventoryItems).forEach(([k, v]) => {
items.push({
name: k,
icon: k+".png",
count: v
})
})
Object.entries(loadoutItems).forEach(([k,v]) => {
items.push({
name: k,
icon: k+".png",
count: 1
})
})
}
}
if (online) {
if (config.Framework.includes("qb")) {
const qPlayer = FrameworkObject.Functions.GetPlayer(id)
if (qPlayer) {
const inventoryItems = qPlayer.PlayerData.items
if (config.Inventory === "codem-inventory") {
Object.entries(inventoryItems).forEach(([slot, value]) => {
items[Number(slot) - 1].name = value.name
items[Number(slot) - 1].icon = value.image
items[Number(slot) - 1].count = value.amount
})
} else {
if (inventoryItems.length) {
inventoryItems.forEach(item => {
items[Number(item.slot) - 1].name = item.name
items[Number(item.slot) - 1].icon = item.image
items[Number(item.slot) - 1].count = item.amount
})
} else {
Object.entries(inventoryItems).forEach(([slot,item]) => {
items[Number(slot) - 1].name = item.name
items[Number(slot) - 1].icon = item.image
items[Number(slot) - 1].count = item.amount
})
}
}
}
} else {
const xPlayer = FrameworkObject.GetPlayerFromId(id)
if (xPlayer) {
const inventory = xPlayer.getInventory()
let isSlotsDifferent = inventory.length
if (!isSlotsDifferent) {
Object.entries(inventory).forEach(([slot, item]) => {
items[Number(slot) - 1].name = item.name
items[Number(slot) - 1].icon = `${item.name}.png`
items[Number(slot) - 1].count = item.count
})
} else {
inventory.forEach(item => {
items[Number(item.slot) - 1].name = item.name
items[Number(item.slot) - 1].icon = `${item.name}.png`
items[Number(item.slot) - 1].count = item.count
})
}
}
}
}
return items
},
ClearInventory: async (online, id) => {
if (config.Framework.includes("esx") && config.Inventory !== "codem-inventory") {
if (!online) {
let result = await query(`
UPDATE \`users\`
SET \`inventory\` = '[]'
WHERE \`identifier\` = '${id}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
}
} else {
if (!online && config.Inventory !== "codem-inventory") {
let result = await query(`
UPDATE \`players\`
SET \`inventory\` = '[]'
WHERE \`citizenid\` = '${id}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
}
}
if (config.Inventory === "codem-inventory" && !online) {
let result = await query(`
update \`codem_new_inventory\`
set \`inventory\` = '{}'
where \`identifier\` = '${id}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
}
if (online) {
if (config.Inventory === "ox_inventory") {
exports["ox_inventory"].ClearInventory(id)
} else if (config.Inventory === "qs-inventory") {
exports["qs-inventory"].ClearInventory(id)
} else if (config.Inventory === "qb-inventory") {
exports["qb-inventory"].ClearInventory(id)
} else if (config.Inventory === "codem-inventory") {
exports["codem-inventory"].ClearInventory(id)
} else if (config.Inventory === "chezza-inventory") {
// CHEZZA
}
}
},
RemoveItem: async (online, id, slot, amount, itemName) => {
let playerName = "Not Found"
if (!online) {
result = await query(`
SELECT * FROM \`${config.Framework.includes("esx") ? "users" : "players"}\`
WHERE \`${config.Framework.includes("esx") ? "identifier" : "citizenid"}\` = '${id}'
`)
if (result === false) return res.json({ code: 404, message: "SQL Error Appeared." })
result = result [0]
if (config.Framework.includes("esx")) {
playerName = result.firstname+" "+result.lastname
} else {
playerName = result.name
}
}
if (config.Inventory === "ox_inventory") {
if (!online) {
let userInventory = JSON.parse(result.inventory)
const index = userInventory.findIndex(i => Number(i.slot) === Number(slot))
const itemAmount = userInventory[index].count
let realAmount = amount
if (
Number(itemAmount) - Number(amount) <= 0 ||
Number(amount) === 0 ||
amount === null ||
!amount
) {
userInventory.splice(index, 1)
realAmount = itemAmount
} else {
userInventory[index].count = Number(itemAmount) - Number(amount)
}
result = await query(`
UPDATE \`${config.Framework.includes("esx") ? "users" : "players"}\`
SET \`inventory\` = '${JSON.stringify(userInventory)}'
WHERE \`${config.Framework.includes("esx") ? "identifier" : "citizenid"}\` = '${id}'
`)
if (result === false) return "SQL"
return {
playerName,
realAmount
}
}
} else if (config.Inventory === "qs-inventory") {
if (!online) {
let userInventory = JSON.parse(result.inventory)
const index = userInventory.findIndex(item => Number(item.slot) === Number(slot))
const itemAmount = userInventory[index].amount
let realAmount = amount
if (
Number(itemAmount) - Number(amount) <= 0 ||
Number(amount) === 0 ||
amount === null ||
!amount
) {
userInventory.splice(index, 1)
realAmount = itemAmount
} else {
userInventory[index].amount = Number(itemAmount) - Number(amount)
}
result = await query(`
UPDATE \`${config.Framework.includes("esx") ? "users" : "players"}\`
SET \`inventory\` = '${JSON.stringify(userInventory)}'
WHERE \`${config.Framework.includes("esx") ? "identifier" : "citizenid"}\` = '${id}'
`)
if (result === false) return "SQL"
return {
playerName,
realAmount
}
}
} else if (config.Inventory === "qb-inventory") {
if (!online) {
let userInventory = JSON.parse(result.inventory)
const index = userInventory.findIndex(item => Number(item.slot) === Number(slot))
const itemAmount = userInventory[index].amount
let realAmount = amount
if (
Number(itemAmount) - Number(amount) <= 0 ||
Number(amount) === 0 ||
amount === null ||
!amount
) {
userInventory.splice(index, 1)
realAmount = itemAmount
} else {
userInventory[index].amount = Number(itemAmount) - Number(amount)
}
result = await query(`
UPDATE \`players\`
SET \`inventory\` = '${JSON.stringify(userInventory)}'
WHERE \`citizenid\` = '${id}'
`)
if (result === false) return "SQL"
return {
playerName,
realAmount
}
}
} else if (config.Inventory === "codem-inventory") {
if (!online) {
let result = await query(`
select * from \`codem_new_inventory\`
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
let userInventory = JSON.parse(result.inventory)
let wantedItem = userInventory[String(slot)]
const itemAmount = wantedItem.amount
let realAmount = amount
if (
Number(itemAmount) - Number(amount) <= 0 ||
Number(amount) === 0 ||
amount === null ||
!amount
) {
wantedItem = undefined
realAmount = itemAmount
} else {
wantedItem.amount = Number(itemAmount) - Number(amount)
}
userInventory[String(slot)] = wantedItem
result = await query(`
update \`codem_new_inventory\`
set \`inventory\` = '${JSON.stringify(userInventory)}'
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
return {
playerName,
realAmount
}
}
} else if (config.Inventory === "chezza-inventory") {
if (!online) {
let result = await query(`
select * from \`users\`
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
let userInventory = JSON.parse(result.inventory)
let userLoadout = JSON.parse(result.loadout)
let exists = false
let weapon = itemName.toLowerCase().startsWith("weapon") ? true : false
if (weapon) {
exists = userLoadout[itemName] ? userLoadout[itemName] : undefined
} else {
exists = userInventory[itemName] ? userInventory[itemName] : undefined
}
if (weapon) {
userLoadout[itemName] = undefined
result = await query(`
update \`users\`
set \`loadout\` = '${JSON.stringify(userLoadout)}'
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
let realAmount = 1
return {
playerName,
realAmount
}
} else {
let wantedItem = userInventory[itemName]
const itemAmount = wantedItem
let realAmount = amount
if (
Number(itemAmount) - Number(amount) <= 0 ||
Number(amount) === 0 ||
amount === null ||
!amount
) {
wantedItem = undefined
realAmount = itemAmount
} else {
wantedItem = Number(itemAmount) - Number(amount)
}
userInventory[itemName] = wantedItem
result = await query(`
update \`users\`
set \`inventory\` = '${JSON.stringify(userInventory)}'
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
return {
playerName,
realAmount
}
}
}
}
if (online) {
if (config.Framework.includes("esx")) {
const xPlayer = FrameworkObject.GetPlayerFromId(id)
if (xPlayer) {
playerName = xPlayer.getName()
let newAmount = Number(amount)
const currentAmount = xPlayer.getInventoryItem(itemName).count
if (
!currentAmount ||
Number(currentAmount) - newAmount <= 0 ||
newAmount === 0 ||
!newAmount
) {
newAmount = Number(currentAmount)
}
xPlayer.removeInventoryItem(itemName, newAmount)
return {
playerName,
newAmount
}
}
} else {
const qPlayer = FrameworkObject.Functions.GetPlayer(id)
if (qPlayer) {
playerName = qPlayer.PlayerData.name
let newAmount = Number(amount)
let Items = await LV.GetPlayerInventoryItems(true, id)
let currentAmount = Items[Number(slot) - 1][config.Inventory !== "codem-inventory" ? "count" : "amount"]
if (
Number(newAmount) === 0 ||
!amount ||
!newAmount ||
isNaN(newAmount) ||
String(newAmount) === "undefined" ||
Number(currentAmount) - Number(newAmount) <= 0
) {
newAmount = currentAmount
}
qPlayer.Functions.RemoveItem(itemName, newAmount, Number(slot))
return {
playerName,
newAmount
}
}
}
}
},
AddItem: async (online, id, itemName, amount, exists, slot) => {
let playerName = "Not Found."
if (!online) {
let result = await query(`
SELECT * FROM \`${config.Framework.includes("qb") ? "players" : "users"}\`
WHERE \`${config.Framework.includes("qb") ? "citizenid" : "identifier"}\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
if (config.Framework.includes("esx")) {
playerName = result.firstname+" "+result.lastname
} else {
playerName = result.name
}
let playerInventory = JSON.parse(result.inventory)
if (config.Inventory === "qb-inventory") {
if (!exists) {
const itemDetails = FrameworkObject.Shared.Items[itemName]
let info = {}
if (itemDetails.type === "weapon") {
let serieNumber = randomInteger(2)+randomString(3)+randomInteger(1)+randomString(2)+randomInteger(3)+randomString(4)
serieNumber = serieNumber.replace(/,/g, '')
info.serie = `${serieNumber}`
info.quality = 100
}
playerInventory[playerInventory.length] = {
name: itemDetails.name,
amount: Number(amount),
info: JSON.stringify(info) === '{}' ? [] : info,
type: itemDetails.type,
slot: Number(playerInventory.length) + 1
}
} else {
const indexOfNeededItem = playerInventory.findIndex(item => Number(item.slot) === Number(slot))
if (indexOfNeededItem === -1) return undefined
playerInventory[indexOfNeededItem].amount = Number(playerInventory[indexOfNeededItem].amount) + Number(amount)
}
} else if (config.Inventory === "ox_inventory") {
if (!exists) {
const ServerItems = exports["ox_inventory"].Items()
const itemDetails = ServerItems[itemName]
if (!itemDetails) return undefined
let metadata = {}
if (itemDetails.weapon === true) {
let firstnameLastname = undefined
if (config.Framework.includes("qb")) {
const charinfo = JSON.parse(result.charinfo)
firstnameLastname = charinfo.firstname+" "+charinfo.lastname
} else {
firstnameLastname = result.firstname+" "+result.lastname
}
metadata = {
components: [],
ammo: 0,
registered: firstnameLastname,
durability: 100,
serial: randomInteger(6)+randomString(3)+randomInteger(6)
}
}
playerInventory[playerInventory.length] = {
name: itemDetails.name,
slot: Number(playerInventory.length) + 1,
count: Number(amount),
metadata: JSON.stringify(metadata) === "{}" ? undefined : metadata
}
} else {
const indexOfNeededItem = playerInventory.findIndex(item => Number(item.slot) === Number(slot))
if (indexOfNeededItem === -1) return undefined
playerInventory[indexOfNeededItem].count = Number(playerInventory[indexOfNeededItem].count) + Number(amount)
}
} else if (config.Inventory === "qs-inventory") {
if (!exists) {
const ServerItems = exports["qs-inventory"].GetItemList()
const itemDetails = ServerItems[itemName]
let info = {}
if (itemDetails.type === "weapon") {
let serieNumber = randomInteger(2)+randomString(3)+randomInteger(1)+randomString(2)+randomInteger(3)+randomString(4)
serieNumber = serieNumber.replace(/,/g, '')
info.serie = `${serieNumber}`
info.quality = 100
}
playerInventory[playerInventory.length] = {
name: itemDetails.name,
amount: Number(amount),
info: JSON.stringify(info) === '{}' ? [] : info,
type: itemDetails.type,
slot: Number(playerInventory.length) + 1
}
} else {
const indexOfNeededItem = playerInventory.findIndex(item => Number(item.slot) === Number(slot))
if (indexOfNeededItem === -1) return undefined
playerInventory[indexOfNeededItem].amount = Number(playerInventory[indexOfNeededItem].amount) + Number(amount)
}
} else if (config.Inventory === "codem-inventory") {
result = await query(`
select * from \`codem_new_inventory\`
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
playerInventory = JSON.parse(result.inventory)
if (!exists) {
const ServerItems = exports["codem-inventory"].GetItemList()
const itemDetails = ServerItems[itemName]
if (!itemDetails) return undefined
let info = []
if (itemDetails.type === "weapon") {
info = {
attachements: [],
series: randomString(11),
ammo: 0,
quality: 100,
decay: "time",
repair: 0,
durability: 0.3,
maxrepair: 5,
tint: 0,
lastuse: Date.now(),
}
}
let emptySlot = undefined
for(let i = 0; i < config.MaxInventorySlot; i++) {
if (emptySlot) continue
const slotItem = playerInventory[String(i)]
if (!slotItem) {
emptySlot = i
}
}
if (!emptySlot) return undefined
playerInventory[emptySlot] = {
amount: Number(amount),
name: itemDetails.name,
info: info,
}
} else {
playerInventory[String(slot)].amount = Number(playerInventory[String(slot)].amount) + Number(amount)
}
} else if (config.Inventory === "chezza-inventory") {
result = await query(`
select * from \`users\`
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
result = result [0]
playerInventory = JSON.parse(result.inventory)
playerLoadout = JSON.parse(result.loadout)
if (!exists) {
if (itemName.toLowerCase().startsWith("weapon")) {
playerLoadout[itemName] = {ammo:0}
} else {
playerInventory[itemName] = amount
}
} else {
if (itemName.toLowerCase().startsWith("weapon")) {
playerLoadout[itemName] = {ammo:0}
} else {
playerInventory[itemName] = playerInventory[itemName]+amount
}
}
}
if (config.Inventory !== "codem-inventory") {
result = await query(`
UPDATE \`${config.Framework.includes("qb") ? "players" : "users"}\`
SET \`inventory\` = '${JSON.stringify(playerInventory)}'
WHERE \`${config.Framework.includes("qb") ? "citizenid" : "identifier"}\` = '${id}'
`)
if (result === false) return "SQL"
} else {
result = await query(`
update \`codem_new_inventory\`
set \`inventory\` = '${JSON.stringify(playerInventory)}'
where \`identifier\` = '${id}'
`)
if (result === false) return "SQL"
}
return playerName
} else {
if (config.Framework.includes("esx")) {
const xPlayer = FrameworkObject.GetPlayerFromId(id)
if (xPlayer) {
playerName = xPlayer.getName()
xPlayer.addInventoryItem(itemName, amount)
return playerName
}
} else {
const qPlayer = FrameworkObject.Functions.GetPlayer(id)
if (qPlayer) {
playerName = qPlayer.PlayerData.name
const itemAdded = qPlayer.Functions.AddItem(itemName, amount)
if (!itemAdded) return undefined
return playerName
}
}
}
},
GetAllItems: async () => {
let items = []
const CraftableItems = config.CraftableItems
if (config.Inventory === "ox_inventory") {
const ServerItems = exports["ox_inventory"].Items()
Object.entries(ServerItems).forEach(([k,v]) => {
const CraftData = CraftableItems[k]
items.push({
name: k,
label: v.label,
image: `${k}.png`,
useable: v.weapon === true ? true : v.ammo === true ? true : v.consume ? true : false,
weight: v.weight ? v.weight : 0,
weapon: v.weapon ? v.weapon : false,
ammoname: v.ammoname,
unique: v.stack ? v.stack : true,
close: v.close ? v.close : true,
requiredItems: CraftData ? CraftData.requireditems : undefined,
secondsforcraft: CraftData ? CraftData.secondsforcraft : undefined
})
})
} else if (config.Inventory === "qb-inventory") {
const serverItems = FrameworkObject.Shared.Items
Object.entries(serverItems).forEach(([key, value]) => {
const CraftData = CraftableItems[key]
items.push({
name: key,
label: value.label,
image: value.image,
useable: value.useable,
weight: value.weight,
weapon: value.type === 'weapon' ? true : false,
ammoname: value.ammotype,
unique: value.unique,
close: value.shouldClose ? value.shouldClose : false,
description: value.description,
requiredItems: CraftData ? CraftData.requireditems : undefined,
secondsforcraft: CraftData ? CraftData.secondsforcraft : undefined
})
})
} else if (config.Inventory === "qs-inventory") {
const serverItems = exports['qs-inventory'].GetItemList()
Object.entries(serverItems).forEach(([key, value]) => {
const CraftData = CraftableItems[key]
items.push({
name: key,
label: value.label,
image: value.image,
useable: value.useable,
weight: value.weight,
weapon: value.type === 'weapon' ? true : false,
ammoname: value.ammotype,
unique: value.unique,
close: value.shouldClose ? value.shouldClose : false,
description: value.description,
requiredItems: CraftData ? CraftData.requireditems : undefined,
secondsforcraft: CraftData ? CraftData.secondsforcraft : undefined
})
})
} else if (config.Inventory === "codem-inventory") {
const ServerItems = exports["codem-inventory"].GetItemList()
Object.entries(ServerItems).forEach(([key, value]) => {
const CraftData = CraftableItems[key]
items.push({
name: key,
label: value.label,
image: value.image,
useable: value.useable,
weight: value.weight,
weapon: value.type === 'weapon' ? true : false,
ammoname: value.ammotype,
unique: value.unique,
close: value.shouldClose ? value.shouldClose : false,
description: value.description,
requiredItems: CraftData ? CraftData.requireditems : undefined,
secondsforcraft: CraftData ? CraftData.secondsforcraft : undefined
})
})
} else if (config.Inventory === "chezza-inventory") {
let ServerItems = await query(`
select * from \`items\`
`)
if (ServerItems === false) return "SQL"
ServerItems.forEach(item => {
const CraftData = CraftableItems[item.name]
items.push({
name: item.name,
label: item.label,
image: item.name+".png",
useable: item.can_remove === 1 ? true : false,
weight: item.weight,
weapon: item.name.toLowerCase().startsWith("weapon") ? true : false,
ammoname: "Unknown",
unique: item.rare === 1 ? true : false,
close: false,
description: item.desc ? item.desc : "Description not found.",
requiredItems: CraftData ? CraftData.requireditems : undefined,
secondsforcraft: CraftData ? CraftData.secondsforcraft : undefined
})
})
}
return items
},
GetAllServerVehicles: async () => {
const Vehicles = []
if (config.CodeMVehicleShop) {
let VehicleShopResponse = await query(`select * from \`vehicle_shops\``)
if (VehicleShopResponse === false) return
if (VehicleShopResponse.length === 0) return []
for (const shopdata of VehicleShopResponse) {
const ShopCategories = JSON.parse(shopdata.vehicles)
for (const [category, vehicles] of Object.entries(ShopCategories)) {
if (vehicles.length === 0) continue
for (const vehicle of vehicles) {
const prepareVehicle = {
model: vehicle.hash,
name: vehicle.name,
shop: shopdata.name,
price: vehicle.price,
category: category,
categoryLabel: category,
brand: vehicle.brand
}
Vehicles.push(prepareVehicle)
}
}
}
} else if (config.CustomVehicles) {
// Make your own function
// get variables from where you store vehicles
// and push it to Vehicles array like Vehicles.push()
// needed variables and example:
// const newVehicle = {
// model: yourvariable,
// name: yourvariable,
// shop: yourvariable,
// price: yourvariable,
// category: yourvariable,
// categoryLabel: yourvariable,
// brand: yourvariable
// }
// Vehicles.push(newVehicle)
} else {
if (config.Framework.includes("qb")) {
for (const [key,value] of Object.entries(FrameworkObject.Shared.Vehicles)) {
Vehicles.push({
model: key,
name: value.name,
shop: value.shop,
price: value.price,
category: value.category,
categoryLabel: value.categoryLabel,
brand: value.brand
})
}
} else {
let response = await query(`select * from \`vehicles\``)
if (response === false) return
if (response.length === 0) return []
response.map(c => {
Vehicles.push({
model: c.model,
name: c.name,
shop: undefined,
price: c.price,
category: c.category,
categoryLabel: undefined,
brand: undefined
})
})
}
}
return Vehicles
},
GetPlayerPhoneNumber: async (uid) => {
if (config.Framework.includes("esx")) {
let result = await query(`
select * from \`users\`
where \`identifier\` = '${uid}'
`)
if (result === false) return false
if (result.length === 0) return false
result = result[0]
// const charinfo = JSON.parse(result.charinfo)
// return charinfo.phone // in charinfo
return result.phone_number // different column (default esx)
}
},
ChangePlayersPhoneNumber: async (uid, newPhone) => {
if (config.Framework.includes("esx")) {
// different column (default esx)
let result = await query(`
update \`users\`
set \`phone_number\` = '${newPhone}'
where \`identifier\` = '${uid}'
`)
if (result === false) return false
return true
// in charinfo
// let result = await query(`
// select * from \`users\`
// where \`identifier\` = '${uid}'
// `)
// if (result === false) return false
// if (result.length === 0) return false
// result = result[0]
// const charinfo = result.charinfo
// charinfo.phone = newPhone
// result = await query(`
// update \`users\`
// set \`charinfo\` = '${JSON.stringify(charinfo)}'
// where \`identifier\` = '${uid}'
// `)
// if (result === false) return false
// return true
}
}
}