Configs
Config = {}
Config.Framework = 'qb-core' -- 'qb-core'
Config.WriteTime = 5000 -- Time in ms to write a pageQBCore, ESX = nil, nil
Citizen.CreateThread(function()
if Config.Framework == 'qb-core' then
QBCore = exports['qb-core']:GetCoreObject()
QBCore.Functions.CreateUseableItem('book', function(src, item)
TriggerClientEvent('ps-books:client:openBook', src, {
type = 'book',
pages = item.metadata.pages,
})
end)
QBCore.Functions.CreateUseableItem('pen', function(src, item)
TriggerClientEvent('ps-books:client:createBook', src)
end)
lib.callback.register('ps-books:server:getBooks', function(source)
return GetBooksByCitizenID(source)
end)
function GetIdentifier(src)
local Player = QBCore.Functions.GetPlayer(src)
if Player ~= nil then
return Player.PlayerData.citizenid
end
return nil
end
function CreateBook(src, title, pages, addToDB)
local Player = QBCore.Functions.GetPlayer(src)
if Player ~= nil then
local hasPaper = Player.Functions.GetItemByName('paper')
local hasPen = Player.Functions.GetItemByName('pen')
if hasPaper.count >= 1 and hasPen.count >= 1 then
TriggerClientEvent('ps-books:server:progress', src, Config.WriteTime, 'Writing book...', "fas fa-pen-fancy", true)
Citizen.Wait(5000)
Player.Functions.AddItem('book', 1, false, {
pages = pages,
})
Player.Functions.RemoveItem('pen', 1, false)
Player.Functions.RemoveItem('paper', 1, false)
if addToDB then
AddBookToDatabase(Player.PlayerData.citizenid, title, pages)
end
else
TriggerClientEvent('QBCore:Notify', src, 'you dont have enough materials', 'error')
end
end
end
elseif Config.Framework == 'esx' then
ESX = exports['es_extended']:getSharedObject()
ESX.RegisterUsableItem('book', function(source, remove, item)
TriggerClientEvent('ps-books:client:openBook', source, {
type = 'book',
pages = item.metadata.pages,
})
end)
ESX.RegisterUsableItem('pen', function(source, remove, item)
TriggerClientEvent('ps-books:client:createBook', source)
end)
lib.callback.register('ps-books:server:getBooks', function(source)
return GetBooksByCitizenID(source)
end)
function GetIdentifier(src)
local Player = ESX.GetPlayerFromId(src)
if Player ~= nil then
local id = Player.identifier
return id
else
return nil
end
end
function CreateBook(src, title, pages, addToDB)
local Player = ESX.GetPlayerFromId(src)
if Player ~= nil then
local hasPaper = Player.getInventoryItem('pen')
local hasPen = Player.getInventoryItem('paper')
if hasPaper.count >= 1 and hasPen.count >= 1 then
TriggerClientEvent('ps-books:server:progress', src, Config.WriteTime, 'Writing book...', "fas fa-pen-fancy", true)
Citizen.Wait(5000)
Player.addInventoryItem('book', 1, 100.0, {
pages = pages,
})
Player.removeInventoryItem('pen', 1)
Player.removeInventoryItem('paper', 1)
if addToDB then
AddBookToDatabase(Player.identifier, title, pages)
end
else
TriggerClientEvent('esx:showNotification', src, 'you dont have enough materials')
end
end
end
end
end)Last updated