Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require("mysql")
- local DATABASE_HOST = "127.0.0.1"
- local DATABASE_PORT = 3306
- local DATABASE_NAME = "shop"
- local DATABASE_USERNAME = "root"
- local DATABASE_PASSWORD = "626465"
- Shop.options = {}
- Shop.options.Samount = 5000
- Shop.Database = {}
- -- New database code (again)
- local function DatabaseError(data)
- print("Shops, Database failed with error: " .. tostring(data) .. "\n")
- if db then mysql.disconnect(db) db = nil end
- end
- local db, error = mysql.connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT)
- if db == 0 then DatabaseError(error) return end
- print("Shops, Database connection opened: " .. db .. "\n")
- function Shop.Database:GetMoney(steamid) -- Look at this so much more simple then the old code.
- local data, IsOk, error = mysql.query(db, "SELECT Money FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- if data[1] then return data[1] end -- There should always only be 1 results to this query. Checking for more so we can error can be added but would only slow the code down ;)
- return -1
- end
- function Shop.Database:AddUser(steamid, money)
- local data, IsOk, error = mysql.query(db, "INSERT INTO Players VALUES ('" .. steamid .. "','" .. Shop.options.Samount .. "', '', 0,'', 0,'', 0 )")
- if !IsOk then DatabaseError(error) return end
- end
- function Shop.Database:SetMoney(steamid, money)
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET Money=" .. money .. " WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- function Shop.Database:GetHats(steamid)
- local data, IsOk, error = mysql.query(db, "SELECT Hats FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return {} end
- if data[1] then return string.Explode("w", data[1]) end
- return {}
- end
- function Shop.Database:GetWHats(steamid)
- local data, IsOk, error = mysql.query(db, "SELECT WHats FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return {} end
- return data[1]
- end
- function Shop.Database:GetModels(steamid)
- local data, IsOk, error = mysql.query(db, "SELECT Models FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return {} end
- if data[1] then return string.Explode("w", data[1]) end
- return {}
- end
- function Shop.Database:GetWModels(steamid)
- local data, IsOk, error = mysql.query(db, "SELECT WModels FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return {} end
- return data[1]
- end
- function Shop.Database:GetTrails(steamid)
- local data, IsOk, error = mysql.query(db, "SELECT Trails FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return {} end
- if data[1] then return string.Explode("w", data[1]) end
- return {}
- end
- function Shop.Database:GetWTrails(steamid)
- local data, IsOk, error = mysql.query(db, "SELECT WTrails FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return {} end
- return data[1]
- end
- function Shop.Database:SetHats(steamid, hats)
- if hats != nil and hats != {} then -- Skip empty's
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET Hats='" .. string.Implode("W", hats) .. "' WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- end
- function Shop.Database:SetWHats(steamid, hats)
- if hats != nil and hats != 0 then -- Skip empty's
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET WHats='" .. string.Implode("W", hats) .. "' WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- end
- function Shop.Database:SetModels(steamid, models)
- if models != nil and models != {} then -- Skip empty's
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET Models='" .. string.Implode("W", models) .. "' WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- end
- function Shop.Database:SetWModels(steamid, model)
- if model != nil and model != 0 then -- Skip empty's
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET WModels=" .. model.. " WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- end
- function Shop.Database:SetTrails(steamid, trails)
- if trails != nil and trails != {} then -- Skip empty's
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET Trails='" .. string.Implode("W", trails) .. "' WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- end
- function Shop.Database:SetWTrails(steamid, trails)
- if trails != nil and trails != 0 then -- Skip empty's
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET WTrails='" .. string.Implode("W", trails) .. "' WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- end
- function Shop.Database:SetAll(steamid, money, hats, whats, trails, wtrails, models, wmodels)
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET Money=" .. money ..", Hats='" .. hats .. "', WHats=" .. whats .. ", Trails='" .. trails .."', WTrails=" .. wtrails .. "', Models='" .. models .. "', WModels=" .. wmodels .. " WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- function Shop.Database:GetAll(steamid)
- local data, IsOk, error = mysql.query(db, "SELECT Money, Hats, WHats, Trails, WTrails, Models, WModels FROM players WHERE SteamID = '" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- if !data[1] or !data[1][1] then return -1 end
- return data[1][1], data[1][2], data[1][3], data[1][4], data[1][5], data[1][6], data[1][7]
- end
- local function SaveData(ply)
- if ply and ply:IsValid() then
- Shop.Database:SetAll(ply:SteamID(), ply.money, string.Implode("W", ply.hats), ply.what, string.Implode("W", ply.trails), ply.wtrail, string.Implode("W", ply.models), ply.wmodels)
- end
- end
- function Shop.Database:SetAll(steamid, money, hats, whats, trails, wtrails, models, wmodels)
- local data, IsOk, error = mysql.query(db, "UPDATE Players SET Money=" .. money ..", Hats='" .. hats .. "', WHats=" .. whats .. ", Trails='" .. trails .."', WTrails=" .. wtrails .. ", Models='" .. models .. "', WModels=" .. wmodels .. " WHERE SteamID='" .. steamid .. "'")
- if !IsOk then DatabaseError(error) return end
- end
- hook.Add( "PlayerInitialSpawn", "Shop.LoadDatabase", function (ply)
- local steamid = ply:SteamID()
- ply.money, ply.hats, ply.what, ply.trails, ply.wtrail, ply.models, ply.wmodels = Shop.Database:GetAll(ply:SteamID())
- if ply.money == -1 then
- Shop.Database:AddUser(steamid, 100) -- Second variable here is the starting money of the player you might want to change that if you want.
- ply.money, ply.hats, ply.whats, ply.trails, ply.wtrails, ply.models, ply.wmodels = Shop.Database:GetAll(ply:SteamID())
- end
- if ply.what then ply:SetNetworkedInt("WHats", ply.what) end
- ply.hats = string.Explode("W", ply.hats)
- ply.trails = string.Explode("W", ply.trails)
- ply.models = string.Explode("W", ply.models)
- -- ply.wtrail = tonumber(ply.wtrail)
- -- ply.wmodels = tonumber(ply.wmodels)
- Shop.Inventory:SendHats(ply)
- Shop.Inventory:SendTrails(ply)
- Shop.Inventory:SendModels(ply)
- Shop.Inventory:SendMoney(ply)
- Shop.Inventory:SendWhat(ply)
- Shop.Inventory:SendWtrail(ply)
- timer.Create( tostring(ply:UniqueID()) .. "_SaveDataTimer", 180, 0, SaveData, ply)
- -- Shop.Trails:CreateTrail(ply)
- end)
- local function fPlayerDisconnect( ply )
- if ply then
- SaveData(ply)
- end
- end
- hook.Add( "PlayerDisconnected", "Shop.SaveDatabase", fPlayerDisconnect )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement