housing und dj
This commit is contained in:
parent
112c7b1761
commit
10a5d168d4
731 changed files with 506993 additions and 0 deletions
212
resources/[housing]/qs-housing/server/custom/framework/qb.lua
Normal file
212
resources/[housing]/qs-housing/server/custom/framework/qb.lua
Normal file
|
@ -0,0 +1,212 @@
|
|||
if Config.Framework ~= 'qb' then
|
||||
return
|
||||
end
|
||||
|
||||
QBCore = exports['qb-core']:GetCoreObject()
|
||||
|
||||
userTable = 'players' -- users
|
||||
identifierColumn = 'citizenid' -- identifier
|
||||
accountsColumn = 'money'
|
||||
|
||||
RegisterNetEvent('QBCore:Server:OnPlayerLoaded', function()
|
||||
local src = source
|
||||
Debug('Loaded player:', src)
|
||||
CreateQuests(src)
|
||||
end)
|
||||
|
||||
CreateThread(function()
|
||||
for k, v in pairs(QBCore.Functions.GetPlayers()) do
|
||||
if v then
|
||||
Debug('Loaded player:', v)
|
||||
CreateQuests(v)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
function RegisterServerCallback(name, cb)
|
||||
QBCore.Functions.CreateCallback(name, cb)
|
||||
end
|
||||
|
||||
function RegisterUsableItem(name, cb)
|
||||
QBCore.Functions.CreateUseableItem(name, cb)
|
||||
end
|
||||
|
||||
function GetPlayerFromId(source)
|
||||
return QBCore.Functions.GetPlayer(source)
|
||||
end
|
||||
|
||||
function GetPlayerFromIdentifier(identifier)
|
||||
return QBCore.Functions.GetPlayerByCitizenId(identifier)
|
||||
end
|
||||
|
||||
function AddMoneyToAccount(account, amount, isNotRent)
|
||||
local source = GetPlayerSourceFromIdentifier(account)
|
||||
if source then
|
||||
AddAccountMoney(source, 'bank', amount)
|
||||
if isNotRent then return end
|
||||
TriggerClientEvent('qb-houses:sendTextMessage', source, Lang('HOUSING_NOTIFICATION_RENT_PAYMENT') .. amount, 'error')
|
||||
else
|
||||
local result = MySQL.Sync.fetchAll('SELECT ' .. accountsColumn .. ' FROM ' .. userTable .. ' WHERE ' .. identifierColumn .. ' = ?', { account })
|
||||
if not result[1] then return print('Add Money Account : Not finded this account: ' .. account) end
|
||||
local accounts = json.decode(result[1].money)
|
||||
accounts.bank = accounts.bank + amount
|
||||
MySQL.Sync.execute('UPDATE ' .. userTable .. ' SET ' .. accountsColumn .. ' = ? WHERE ' .. identifierColumn .. ' = ?', {
|
||||
json.encode(accounts),
|
||||
account
|
||||
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
function PlayerIsAdmin(source)
|
||||
return QBCore.Functions.HasPermission(source, 'god') or IsPlayerAceAllowed(source, 'command') or QBCore.Functions.HasPermission(source, 'admin')
|
||||
end
|
||||
|
||||
function GetJobName(source)
|
||||
local player = GetPlayerFromId(source)
|
||||
if not player then return '' end
|
||||
return player.PlayerData.job.name
|
||||
end
|
||||
|
||||
function GetCharacterName(source)
|
||||
local player = GetPlayerFromId(source).PlayerData.charinfo
|
||||
return player.firstname, player.lastname
|
||||
end
|
||||
|
||||
function GetAccountMoney(source, account)
|
||||
local player = GetPlayerFromId(source)
|
||||
if account == 'money' then account = 'cash' end
|
||||
if account == 'black_money' then account = 'crypto' end
|
||||
return player.PlayerData.money[account]
|
||||
end
|
||||
|
||||
function AddAccountMoney(source, account, amount)
|
||||
local player = GetPlayerFromId(source)
|
||||
if account == 'money' then account = 'cash' end
|
||||
player.Functions.AddMoney(account, amount)
|
||||
end
|
||||
|
||||
function RemoveAccountMoney(source, account, amount)
|
||||
local player = GetPlayerFromId(source)
|
||||
if account == 'money' then account = 'cash' end
|
||||
player.Functions.RemoveMoney(account, amount)
|
||||
end
|
||||
|
||||
function RemoveItem(source, item, count)
|
||||
local player = GetPlayerFromId(source)
|
||||
player.Functions.RemoveItem(item, count)
|
||||
end
|
||||
|
||||
function GetIdentifier(source)
|
||||
local player = GetPlayerFromId(source)
|
||||
if not player then return false end
|
||||
return player.PlayerData.citizenid
|
||||
end
|
||||
|
||||
function GetPlayerSourceFromIdentifier(identifier)
|
||||
local player = GetPlayerFromIdentifier(identifier)
|
||||
if not player then return false end
|
||||
return player.PlayerData.source
|
||||
end
|
||||
|
||||
function GetPlayerSourceFromSource(source)
|
||||
local player = GetPlayerFromId(source)
|
||||
if not player then
|
||||
return false
|
||||
end
|
||||
return player.PlayerData.source
|
||||
end
|
||||
|
||||
function GetCharacterFromIdentifier(identifier)
|
||||
local result = MySQL.Sync.fetchAll('SELECT charinfo FROM `players` WHERE citizenid = ?', { identifier })
|
||||
if not result[1] then
|
||||
return '', ''
|
||||
end
|
||||
result = result[1]
|
||||
result = json.decode(result.charinfo)
|
||||
return result?.firstname, result?.lastname
|
||||
end
|
||||
|
||||
function RemoveMoneyFromAccount(account, amount, dontCheck)
|
||||
local source = GetPlayerSourceFromIdentifier(account)
|
||||
if source then
|
||||
RemoveAccountMoney(source, 'bank', amount)
|
||||
return true
|
||||
else
|
||||
local player = MySQL.Sync.fetchAll('SELECT ' .. accountsColumn .. ' FROM ' .. userTable .. ' WHERE ' .. identifierColumn .. ' = ?', { account })
|
||||
if player[1] then
|
||||
local accounts = json.decode(player[1].money)
|
||||
if accounts.bank >= amount or dontCheck then
|
||||
accounts.bank = accounts.bank - amount
|
||||
MySQL.Sync.execute('UPDATE ' .. userTable .. ' SET ' .. accountsColumn .. ' = ? WHERE ' .. identifierColumn .. ' = ?', { json.encode(accounts), account })
|
||||
return true
|
||||
end
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function GetPlayerSQLDataFromIdentifier(identifier)
|
||||
local result = MySQL.Sync.fetchAll('SELECT * FROM `players` WHERE citizenid = ? LIMIT 1', { identifier })
|
||||
if result[1] then
|
||||
return result[1]
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function UpdateInside(src, insideId, bool)
|
||||
local Player = GetPlayerFromId(src)
|
||||
Player.Functions.SetMetaData('currentHouseId', bool and insideId or nil)
|
||||
end
|
||||
|
||||
RegisterServerCallback('qb-phone:server:MeosGetPlayerHouses', function(source, cb, input)
|
||||
if input then
|
||||
local search = escape_sqli(input)
|
||||
local searchData = {}
|
||||
local query = 'SELECT * FROM `' .. userTable .. '` WHERE `' .. identifierColumn .. '` = "' .. search .. '"'
|
||||
-- Split on " " and check each var individual
|
||||
local searchParameters = SplitStringToArray(search)
|
||||
-- Construct query dynamicly for individual parm check
|
||||
if #searchParameters > 1 then
|
||||
query = query .. ' OR `firstname` LIKE "%' .. searchParameters[1] .. '%" OR `lastname` LIKE "%' .. searchParameters[1] .. '%"'
|
||||
for i = 2, #searchParameters do
|
||||
query = query .. ' OR `firstname` LIKE "%' .. searchParameters[i] .. '%" OR `lastname` LIKE "%' .. searchParameters[i] .. '%"'
|
||||
end
|
||||
else
|
||||
query = query .. ' OR `firstname` LIKE "%' .. search .. '%" OR `lastname` LIKE "%' .. search .. '%"'
|
||||
end
|
||||
local result = MySQL.Sync.fetchAll(query)
|
||||
if result[1] then
|
||||
local houses = MySQL.Sync.fetchAll('SELECT * FROM player_houses WHERE citizenid = ?',
|
||||
{ result[1][identifierColumn] })
|
||||
if houses[1] then
|
||||
for k, v in pairs(houses) do
|
||||
local charinfo = {
|
||||
firstname = result[1].firstname,
|
||||
lastname = result[1].lastname,
|
||||
}
|
||||
searchData[#searchData + 1] = {
|
||||
name = v.house,
|
||||
keyholders = v.keyholders,
|
||||
owner = v.citizenid,
|
||||
price = Config.Houses[v.house].price,
|
||||
label = Config.Houses[v.house].address,
|
||||
tier = Config.Houses[v.house].tier,
|
||||
garage = Config.Houses[v.house].garage,
|
||||
charinfo = charinfo,
|
||||
coords = {
|
||||
x = Config.Houses[v.house].coords.enter.x,
|
||||
y = Config.Houses[v.house].coords.enter.y,
|
||||
z = Config.Houses[v.house].coords.enter.z
|
||||
}
|
||||
}
|
||||
end
|
||||
cb(searchData)
|
||||
end
|
||||
else
|
||||
cb(nil)
|
||||
end
|
||||
else
|
||||
cb(nil)
|
||||
end
|
||||
end)
|
Loading…
Add table
Add a link
Reference in a new issue