Advertisement
Guest User

Untitled

a guest
Sep 18th, 2017
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.71 KB | None | 0 0
  1. require("mysql")
  2.  
  3. local DATABASE_HOST = "127.0.0.1"
  4. local DATABASE_PORT = 3306
  5. local DATABASE_NAME = "shop"
  6. local DATABASE_USERNAME = "root"
  7. local DATABASE_PASSWORD = "626465"
  8. Shop.options = {}
  9. Shop.options.Samount = 5000
  10.  
  11. Shop.Database = {}
  12.  
  13. -- New database code (again)
  14. local function DatabaseError(data)
  15. print("Shops, Database failed with error: " .. tostring(data) .. "\n")
  16. if db then mysql.disconnect(db) db = nil end
  17. end
  18.  
  19. local db, error = mysql.connect(DATABASE_HOST, DATABASE_USERNAME, DATABASE_PASSWORD, DATABASE_NAME, DATABASE_PORT)
  20. if db == 0 then DatabaseError(error) return end
  21. print("Shops, Database connection opened: " .. db .. "\n")
  22.  
  23. function Shop.Database:GetMoney(steamid) -- Look at this so much more simple then the old code.
  24. local data, IsOk, error = mysql.query(db, "SELECT Money FROM players WHERE SteamID = '" .. steamid .. "'")
  25. if !IsOk then DatabaseError(error) return end
  26. 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 ;)
  27. return -1
  28. end
  29.  
  30. function Shop.Database:AddUser(steamid, money)
  31. local data, IsOk, error = mysql.query(db, "INSERT INTO Players VALUES ('" .. steamid .. "','" .. Shop.options.Samount .. "', '', 0,'', 0,'', 0 )")
  32. if !IsOk then DatabaseError(error) return end
  33. end
  34.  
  35. function Shop.Database:SetMoney(steamid, money)
  36. local data, IsOk, error = mysql.query(db, "UPDATE Players SET Money=" .. money .. " WHERE SteamID='" .. steamid .. "'")
  37. if !IsOk then DatabaseError(error) return end
  38. end
  39.  
  40. function Shop.Database:GetHats(steamid)
  41. local data, IsOk, error = mysql.query(db, "SELECT Hats FROM players WHERE SteamID = '" .. steamid .. "'")
  42. if !IsOk then DatabaseError(error) return {} end
  43. if data[1] then return string.Explode("w", data[1]) end
  44. return {}
  45. end
  46. function Shop.Database:GetWHats(steamid)
  47. local data, IsOk, error = mysql.query(db, "SELECT WHats FROM players WHERE SteamID = '" .. steamid .. "'")
  48. if !IsOk then DatabaseError(error) return {} end
  49. return data[1]
  50. end
  51. function Shop.Database:GetModels(steamid)
  52. local data, IsOk, error = mysql.query(db, "SELECT Models FROM players WHERE SteamID = '" .. steamid .. "'")
  53. if !IsOk then DatabaseError(error) return {} end
  54. if data[1] then return string.Explode("w", data[1]) end
  55. return {}
  56. end
  57. function Shop.Database:GetWModels(steamid)
  58. local data, IsOk, error = mysql.query(db, "SELECT WModels FROM players WHERE SteamID = '" .. steamid .. "'")
  59. if !IsOk then DatabaseError(error) return {} end
  60. return data[1]
  61. end
  62. function Shop.Database:GetTrails(steamid)
  63. local data, IsOk, error = mysql.query(db, "SELECT Trails FROM players WHERE SteamID = '" .. steamid .. "'")
  64. if !IsOk then DatabaseError(error) return {} end
  65. if data[1] then return string.Explode("w", data[1]) end
  66. return {}
  67. end
  68. function Shop.Database:GetWTrails(steamid)
  69. local data, IsOk, error = mysql.query(db, "SELECT WTrails FROM players WHERE SteamID = '" .. steamid .. "'")
  70. if !IsOk then DatabaseError(error) return {} end
  71. return data[1]
  72. end
  73. function Shop.Database:SetHats(steamid, hats)
  74. if hats != nil and hats != {} then -- Skip empty's
  75. local data, IsOk, error = mysql.query(db, "UPDATE Players SET Hats='" .. string.Implode("W", hats) .. "' WHERE SteamID='" .. steamid .. "'")
  76. if !IsOk then DatabaseError(error) return end
  77. end
  78. end
  79. function Shop.Database:SetWHats(steamid, hats)
  80. if hats != nil and hats != 0 then -- Skip empty's
  81. local data, IsOk, error = mysql.query(db, "UPDATE Players SET WHats='" .. string.Implode("W", hats) .. "' WHERE SteamID='" .. steamid .. "'")
  82. if !IsOk then DatabaseError(error) return end
  83. end
  84. end
  85. function Shop.Database:SetModels(steamid, models)
  86. if models != nil and models != {} then -- Skip empty's
  87. local data, IsOk, error = mysql.query(db, "UPDATE Players SET Models='" .. string.Implode("W", models) .. "' WHERE SteamID='" .. steamid .. "'")
  88. if !IsOk then DatabaseError(error) return end
  89. end
  90. end
  91. function Shop.Database:SetWModels(steamid, model)
  92. if model != nil and model != 0 then -- Skip empty's
  93. local data, IsOk, error = mysql.query(db, "UPDATE Players SET WModels=" .. model.. " WHERE SteamID='" .. steamid .. "'")
  94. if !IsOk then DatabaseError(error) return end
  95. end
  96. end
  97. function Shop.Database:SetTrails(steamid, trails)
  98. if trails != nil and trails != {} then -- Skip empty's
  99. local data, IsOk, error = mysql.query(db, "UPDATE Players SET Trails='" .. string.Implode("W", trails) .. "' WHERE SteamID='" .. steamid .. "'")
  100. if !IsOk then DatabaseError(error) return end
  101. end
  102. end
  103. function Shop.Database:SetWTrails(steamid, trails)
  104. if trails != nil and trails != 0 then -- Skip empty's
  105. local data, IsOk, error = mysql.query(db, "UPDATE Players SET WTrails='" .. string.Implode("W", trails) .. "' WHERE SteamID='" .. steamid .. "'")
  106. if !IsOk then DatabaseError(error) return end
  107. end
  108. end
  109. function Shop.Database:SetAll(steamid, money, hats, whats, trails, wtrails, models, wmodels)
  110. 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 .. "'")
  111. if !IsOk then DatabaseError(error) return end
  112. end
  113. function Shop.Database:GetAll(steamid)
  114. local data, IsOk, error = mysql.query(db, "SELECT Money, Hats, WHats, Trails, WTrails, Models, WModels FROM players WHERE SteamID = '" .. steamid .. "'")
  115. if !IsOk then DatabaseError(error) return end
  116. if !data[1] or !data[1][1] then return -1 end
  117. return data[1][1], data[1][2], data[1][3], data[1][4], data[1][5], data[1][6], data[1][7]
  118. end
  119.  
  120. local function SaveData(ply)
  121. if ply and ply:IsValid() then
  122. 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)
  123. end
  124. end
  125.  
  126. function Shop.Database:SetAll(steamid, money, hats, whats, trails, wtrails, models, wmodels)
  127. 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 .. "'")
  128. if !IsOk then DatabaseError(error) return end
  129. end
  130.  
  131. hook.Add( "PlayerInitialSpawn", "Shop.LoadDatabase", function (ply)
  132. local steamid = ply:SteamID()
  133. ply.money, ply.hats, ply.what, ply.trails, ply.wtrail, ply.models, ply.wmodels = Shop.Database:GetAll(ply:SteamID())
  134. if ply.money == -1 then
  135. Shop.Database:AddUser(steamid, 100) -- Second variable here is the starting money of the player you might want to change that if you want.
  136. ply.money, ply.hats, ply.whats, ply.trails, ply.wtrails, ply.models, ply.wmodels = Shop.Database:GetAll(ply:SteamID())
  137. end
  138. if ply.what then ply:SetNetworkedInt("WHats", ply.what) end
  139. ply.hats = string.Explode("W", ply.hats)
  140. ply.trails = string.Explode("W", ply.trails)
  141. ply.models = string.Explode("W", ply.models)
  142. -- ply.wtrail = tonumber(ply.wtrail)
  143. -- ply.wmodels = tonumber(ply.wmodels)
  144. Shop.Inventory:SendHats(ply)
  145. Shop.Inventory:SendTrails(ply)
  146. Shop.Inventory:SendModels(ply)
  147. Shop.Inventory:SendMoney(ply)
  148. Shop.Inventory:SendWhat(ply)
  149. Shop.Inventory:SendWtrail(ply)
  150. timer.Create( tostring(ply:UniqueID()) .. "_SaveDataTimer", 180, 0, SaveData, ply)
  151.  
  152. -- Shop.Trails:CreateTrail(ply)
  153.  
  154. end)
  155.  
  156. local function fPlayerDisconnect( ply )
  157. if ply then
  158. SaveData(ply)
  159. end
  160. end
  161. hook.Add( "PlayerDisconnected", "Shop.SaveDatabase", fPlayerDisconnect )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement