89 lines
2.8 KiB
Lua
89 lines
2.8 KiB
Lua
|
|
|
|
RegisterServerEvent('mapbuilder:syncObject')
|
|
AddEventHandler('mapbuilder:syncObject', function(hash, loc, heading, freeze)
|
|
print('sync ' .. hash .. loc .. heading)
|
|
TriggerClientEvent('mapbuilder:spawnObject', -1, hash, loc, heading, freeze)
|
|
end)
|
|
|
|
RegisterServerEvent('mapbuilder:syncObjectRemove')
|
|
AddEventHandler('mapbuilder:syncObjectRemove', function(objectID, hash)
|
|
TriggerClientEvent('mapbuilder:deleteObject', -1, objectID, hash)
|
|
end)
|
|
|
|
RegisterServerEvent('mapbuilder:saveToDatabase')
|
|
AddEventHandler('mapbuilder:saveToDatabase', function(hash, loc, heading, freeze, comment)
|
|
|
|
local identifier = GetPlayerIdentifiers(source)[1]
|
|
|
|
MySQL.Async.execute(
|
|
'INSERT INTO mapbuilder (objectHash, locX, locY, locZ, heading, freeze, createdBy, comment) VALUES (@objectHash, @locX, @locY, @locZ, @heading, @freeze, @createdBy, @comment)', {
|
|
['@objectHash'] = hash,
|
|
['@locX'] = loc.x,
|
|
['@locY'] = loc.y,
|
|
['@locZ'] = loc.z,
|
|
['@heading'] = heading,
|
|
['@freeze'] = freeze,
|
|
['@createdBy'] = identifier,
|
|
['@comment'] = comment,
|
|
})
|
|
|
|
end)
|
|
|
|
RegisterServerEvent('mapbuilder:removeFromDatabase')
|
|
AddEventHandler('mapbuilder:removeFromDatabase', function(objectID, hash)
|
|
MySQL.Async.execute(
|
|
'DELETE FROM mapbuilder WHERE id = @id and objectHash = @objectHash', {
|
|
['@id'] = objectID,
|
|
['@objectHash'] = hash,
|
|
})
|
|
end)
|
|
|
|
RegisterServerEvent('mapbuilder:updateObject')
|
|
AddEventHandler('mapbuilder:updateObject', function(objectID, loc, heading, freeze)
|
|
MySQL.Async.execute(
|
|
'UPDATE mapbuilder SET locX = @locX, locY = @locY, locZ = @locZ, heading = @heading, freeze = @freeze WHERE id = @id', {
|
|
['@id'] = objectID,
|
|
['@locX'] = loc.x,
|
|
['@locY'] = loc.y,
|
|
['@locZ'] = loc.z,
|
|
['@heading'] = heading,
|
|
['@freeze'] = freeze,
|
|
})
|
|
|
|
TriggerClientEvent('mapbuilder:updateObject', -1, objectID, loc, heading, freeze)
|
|
end)
|
|
|
|
-- no callback to avoid using ESX
|
|
RegisterServerEvent('mapbuilder:getObjects')
|
|
AddEventHandler('mapbuilder:getObjects', function()
|
|
local _source = source
|
|
local steamID = GetPlayerIdentifiers(_source)[1]
|
|
MySQL.Async.fetchAll('SELECT * FROM mapbuilder', {},
|
|
function(result)
|
|
if #result > 0 then
|
|
TriggerClientEvent('mapbuilder:receiveObjects', _source, result)
|
|
end
|
|
end
|
|
)
|
|
|
|
local isWhitelisted = false
|
|
for k, v in pairs(Config.SteamWhitelist) do
|
|
if v == steamID then
|
|
isWhitelisted = true
|
|
break
|
|
end
|
|
end
|
|
|
|
local isAdmin = false
|
|
for k, v in pairs(Config.AdminWhitelist) do
|
|
if v == steamID then
|
|
isAdmin = true
|
|
break
|
|
end
|
|
end
|
|
|
|
TriggerClientEvent('mapbuilder:getPerm', _source, steamID, isWhitelisted, isAdmin)
|
|
|
|
|
|
end) |