Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require('mysqloo')
- FruzzLink.Data = {}
- FruzzLink.Data.MySQL = {}
- FruzzLink.Data.MySQL.DBOBJ = false
- local DATABASE_HOST = "mysql.fruzzservers.com"
- local DATABASE_PORT = 3306
- local DATABASE_NAME = "nkrock_fruzz"
- local DATABASE_USERNAME = "nkrock_fruzz"
- local DATABASE_PASSWORD = "slimjim101"
- function FruzzLink.Data.MySQL:User(ply, callback)
- if ply:IsValid() then
- self:Connect(function(db)
- local query1 = db:query(string.format("INSERT INTO fz_users (name, steamID, userGroup, coins, lastvisit, playtime) VALUES(%q, %q, 'guest', 0, UNIX_TIMESTAMP(), 0)", db:escape(ply:Nick()), ply:SteamID()))
- query1.onSuccess = function() self:GetLink(ply, callback) end
- query1:start()
- end)
- end
- end
- function FruzzLink.Data.MySQL:Connect(callbackfunc)
- if !self.DBOBJ then
- self.DBOBJ = mysqloo.connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT)
- local oldCall = self.DBOBJ.onConnected
- if oldCall then
- self.DBOBJ.onConnected = function(db) oldCall(db) callbackfunc(db) end
- else
- self.DBOBJ.onConnected = function(db) callbackfunc(db) end
- end
- self.DBOBJ.onConnectionFailed = function(db, err)
- print(db, "connection failed", err)
- end
- self.DBOBJ:connect()
- else
- local status = self.DBOBJ:status()
- if status == 1 then
- local oldCall = self.DBOBJ.onConnected
- self.DBOBJ.onConnected = function(db) callbackfunc(db) oldCall(db) end
- elseif status == 2 then
- local oldCall = self.DBOBJ.onConnected
- self.DBOBJ.onConnected = function(db) callbackfunc(db) oldCall(db) end
- self.DBOBJ:connect()
- else
- callbackfunc(self.DBOBJ)
- end
- end
- end
- function FruzzLink.Data.MySQL:GetLink(ply, callback)
- local steamid = ply:SteamID()
- self:Connect(function(db)
- local query1 = db:query(string.format("SELECT * FROM fz_users WHERE steamID = %q LIMIT 1", steamid))
- query1.onSuccess = function(Q)
- local tbl = Q:getData()
- if #tbl == 0 then
- self:NewUser(ply, callback)
- else
- callback(tbl)
- hook.Call("FruzzLinkMade", nil, ply, tbl)
- if ply:IsValid() then
- hook.Call("FruzzLinkMadeAndValid", nil, ply, tbl)
- end
- local rdm = tostring(math.random(0, 1000))
- if ply and !ply:IsValid() then
- hook.Add("Think", "_FruzzLinkMadeAndValid_"..rdm, function()
- if ply:IsValid() then
- hook.Call("FruzzLinkMadeAndValid", nil, ply, tbl)
- hook.Remove("Think", "_FruzzLinkMadeAndValid_"..rdm)
- elseif ply == nil then
- hook.Remove("Think", "_FruzzLinkMadeAndValid_"..rdm)
- end
- end)
- end
- end
- end
- query1.onError = function(Q, E) print("QUERY BOOM: "..E) end
- query1:start()
- end)
- end
- function FruzzLink.Data.MySQL:GetAllBans(callback)
- self:Connect(function(db)
- local query1 = db:query("SELECT * from fz_bans")
- query1.onSuccess = function() callback(query1:GetData()) end
- query1:start()
- end)
- end
- function FruzzLink.Data.MySQL:GetBan(steamid, callback)
- self:Connect(function(db)
- local query1 = db:query(string.format("SELECT * FROM fz_bans WHERE steamid=%q", steamid))
- query1.onSuccess = function(Q)
- callback(Q:getData())
- end
- query1:start()
- end)
- end
- function FruzzLink.Data.MySQL:CreateBan(ply, banner, length, reason)
- print(ply:Nick(), "has been banned!")
- local steamid = ply:SteamID()
- local name = ply:Nick()
- local banner_name = banner:Nick()
- local banner_id = banner:SteamID()
- self:Connect(function(db)
- local banquery = "INSERT INTO `fz_bans` (steamid, name, reason, length, created, banning_name, banning_id, unbanned) VALUES('"..steamid.."', '"..db:escape(name).."', '"..db:escape(reason).."', '"..length.."', UNIX_TIMESTAMP(), '"..db:escape(banner_name).."', '"..banner_id.."', 0)"
- print(banquery)
- local query1 = db:query(banquery)
- query1.onSuccess = function(q) print("SUCCESS!") end
- query1.onFailure = function(q, e) print(e) end
- query1.onAborted = function(q) print("ABORTION!") end
- query1:start()
- globalthis = query1
- end)
- end
- function FruzzLink.Data.MySQL:CreateBanFromSteamID(steamid, banner, length, reason)
- print(steamid, "has been banned!")
- local banner_name = banner:Nick();
- local banner_id = banner:SteamID();
- self:Connect(function(db)
- local query1 = db:query(string.format("INSERT INTO fz_bans (steamid, name, reason, length, created, banning_name, banning_id, unbanned) VALUES(%q, %q, %q, %q, UNIX_TIMESTAMP(), %q, %q, 0)", steamid, "Unknown", db:escape(reason), length, db:escape(banner_name), banner_id))
- query1:start()
- end)
- end
- function FruzzLink.Data.MySQL:UnBan(steamid, unbanner, reason)
- print(steamid, "has been unbanned!")
- local unban = {}
- local uname = unbanner:Nick()
- local uid = unbanner:SteamID()
- FruzzLink.Data.MySQL:GetBan(steamid, function(alldata)
- if #alldata > 0 then
- local high = 0
- for _, data in pairs(alldata) do
- if (data['unbanned'] == 0) and (data['created'] > high) then
- high = data['created']
- unban = data
- end
- end
- end
- end)
- if unban then
- self:Connect(function (db)
- local query1 = db:query("UPDATE fz_bans SET unbanned=1, unban_name='"..uname.."', unban_id='"..uid.."', unban_reason='"..reason.."' WHERE steamid = '"..steamid.."'")
- query1:start()
- end)
- end
- end
- function FruzzLink.Data.MySQL:NewUser(ply, callback)
- if ply:IsValid() then
- ply.FirstTime = true
- print(ply, "has joined for the first time!")
- self:Connect(function(db)
- local query1 = db:query(string.format("INSERT INTO fz_users (name, steamID, userGroup, coins, lastvisit, playtime) VALUES(%q, %q, 'guest', 0, UNIX_TIMESTAMP(), 0)", db:escape(ply:Nick()), ply:SteamID()))
- query1.onSuccess = function() self:GetLink(ply, callback) end
- query1:start()
- end)
- end
- end
- function FruzzLink.Data.MySQL:UpdatePlayerData(ply, col, value)
- if ply.FruzzData && ply.FruzzData.Link then
- ply.FruzzData.Link[col] = value
- end
- self:Connect(function(db)
- local query1 = db:query("UPDATE fz_users SET `"..col.."`='"..db:escape(tostring(value)).."' WHERE steamID='"..ply:SteamID().."'")
- query1:start()
- end)
- end
- function FruzzLink.Data.MySQL:RunQuery(query, onsuccess)
- self:Connect(function(db)
- local query1 = db:query(query)
- if onsuccess then
- query1.onSuccess = function(q) onsuccess(q) end
- end
- query1.onFailure = function(q, e) print(q, e) end
- query1:start()
- end)
- end
- function FruzzLink.Data.MySQL:escape(value)
- return self.DBOBJ:escape(tostring(value))
- end
- hook.Add("PlayerInitialSpawn", "FruzzPlayerData", function(ply)
- FruzzLink.Data:GetPlayerData(ply)
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement