Skip to content

Instantly share code, notes, and snippets.

@xbeastguyx
Last active December 14, 2018 09:14
Show Gist options
  • Save xbeastguyx/5e784fbb1e8772e8479adb03ea5a7eee to your computer and use it in GitHub Desktop.
Save xbeastguyx/5e784fbb1e8772e8479adb03ea5a7eee to your computer and use it in GitHub Desktop.
EZData - The PData Replacement
--[[
EZData - The PData Replacement
By Beast (STEAM_0:0:2316327)
This addon may be used as long as this notice isn't removed. Feel free to let me know what you use it in!
Copyright (C) 2017 Beast
]]
-- Optimizations for functions
local sql_Query = sql.Query
local tostring = tostring
local SQLStr = SQLStr
local sidTo64 = util.SteamIDTo64
-- Player-related functions
local ply = FindMetaTable "Player"
-- Simple formatting for escaping SQL strings
local function formatQuery( str, ... )
local count = 0
local opts = { ... }
local formattedQuery = tostring( str ):gsub( "?", function() count = count + 1 return SQLStr( opts[ count ] ) end )
return sql_Query( formattedQuery )
end
-- Create database
local function createDatabase()
sql_Query "CREATE TABLE IF NOT EXISTS ez_data ( sid BIGINT PRIMARY KEY, key TEXT NOT NULL, value TEXT NOT NULL )"
end
hook.Add( "Initialize", "EZData_CreateDatabase", createDatabase )
-- Setting player's data
function ply:SetEZData( key, val )
formatQuery( "REPLACE INTO ez_data ( sid, key, value ) VALUES( ?, ?, ? )", self:SteamID64(), key, val )
end
-- Getting player's data
function ply:GetEZData( key, def )
local val = formatQuery( "SELECT value FROM ez_data WHERE sid = ? AND key = ? LIMIT 1", self:SteamID64(), key )
if val == nil then
return def
end
return val[ 1 ].value
end
-- Removing player's data
function ply:RemoveEZData( key )
formatQuery( "DELETE FROM ez_data WHERE sid = ? and key = ?", self:SteamID64(), key )
end
-- Setting player's data based on steamid
function util.SetEZData( sid, key, val )
formatQuery( "REPLACE INTO ez_data ( sid, key, value ) VALUES( ?, ?, ? )", sidTo64( sid ), key, val )
end
-- Getting player's data based on steamid
function util.GetEZData( sid, key, def )
local val = formatQuery( "SELECT value FROM ez_data WHERE sid = ? AND key = ? LIMIT 1", sidTo64( sid ), key )
if val == nil then
return def
end
return val[ 1 ].value
end
-- Removing player's data based on steamid
function util.RemoveEZData( sid, key )
formatQuery( "DELETE FROM ez_data WHERE sid = ? and key = ?", sidTo64( sid ), key )
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment