961 lines
41 KiB
JavaScript
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
|
|
}
|
|
}
|
|
} |