• How can I make players keep credits upon leaving the server
    1 replies, posted
[CODE] require("mysql") AddCSLuaFile("autorun/client/creditsmenu.lua") local ITEM function RegisterEmeraldsItem(tb) ITEM[string.upper(tb.Name)] = tb print(Format("Emeralds Credit System -> Registered item %s",tb.Name)) end local function LoadEmeraldCreditModules() ITEM = {} local files = file.FindInLua("EmeraldCredits/sv_modules/*.lua") for k, v in pairs(files) do include("EmeraldCredits/sv_modules/"..v) end end LoadD3CreditModules() concommand.Add("EmeraldCredits_Reload",function(p,c,a) if p and p:IsValid() then if p:IsSuperAdmin() then LoadEmeraldCreditModules() for k,v in pairs(player.GetAll()) do v:ChatPrint("Emerald Credits was reloaded...") end print("Emerald Credits was reloaded...") end else LoadEmeraldCreditModules() for k,v in pairs(player.GetAll()) do v:ChatPrint("Emerald Credits was reloaded...") end print("Emerald Credits was reloaded...") end end) concommand.Add("EmeraldCredits",function(p,c,a) if a[1] then if string.upper(a[1]) == "BUY" then if a[2] then local i = string.upper(a[2]) if ITEM[i] then local db, e = mysql.connect("localhost","donations","donations","donations") if db == 0 then print(e) else local tb, succ, e = mysql.query(db,Format("SELECT * FROM `Emeraldpoints` WHERE SteamID=%q",p:SteamID())) if succ then if tb then local bal = tonumber(tb[1][3]) if bal >= ITEM[i].Cost then if (ITEM[i].Eligible(p)) then tb, succ, e = mysql.query(db,Format("UPDATE `Emeraldpoints` SET Points=Points-%s WHERE SteamID=%q",ITEM[i].Cost,p:SteamID())) if !succ then print(e) end p:ChatPrint(Format("You bought %s for %s credits!",ITEM[i].Name,ITEM[i].Cost)) p:ChatPrint(Format("Your account balance is now %s credits.",bal-ITEM[i].Cost)) ITEM[i].Give(p) for k,v in pairs(player.GetAll()) do if v != p then v:ChatPrint(Format("%s just bought %s with their Emerald Credits!",p:Name(),ITEM[i].Name)) end end else p:ChatPrint(Format("You are not currently eligible to purchase %s!", item[i].Name)) end else p:ChatPrint(Format("You don't have enough credits to purchase %s!",ITEM[i].Name)) end end else print(e) end end mysql.disconnect(db) end end end end end) hook.Add("PlayerInitialSpawn","EmeraldCredits",function(p) local db, e = mysql.connect("localhost","donations","donations","donations") if db == 0 then print(e) else local tb, succ, e = mysql.query(db,Format("SELECT COUNT(*) FROM `Emeraldpoints` WHERE SteamID=%q",p:SteamID())) if succ then if tb then if tonumber(tb[1][1]) < 1 then tb, succ, e = mysql.query(db,Format("INSERT INTO `Emeraldpoints` (`SteamID`,`Points`) VALUES(%q,'0')",p:SteamID())) if !succ then print(e) end else tb, succ, e = mysql.query(db,Format("SELECT * FROM `Emeraldpoints` WHERE SteamID=%q",p:SteamID())) if succ then timer.Simple(5,function() if p and p:IsValid() then p:ChatPrint(Format("Welcome %s! You have %s credits on your account to spend.",p:Name(),tb[1][3])) p:ChatPrint("Say /emerald to access the credit store now!") end end) else print(e) end end end else print(e) end end mysql.disconnect(db) end) concommand.Add("GetEmeraldCreditInfo",function(p,c,a) if !p or !p:IsValid() then return end umsg.Start("EmeraldCreditItems",p) umsg.Short(table.Count(ITEM)) local k,v for k,v in pairs(ITEM) do umsg.String(v.Name) umsg.String(tostring(v.Cost)) umsg.String(v.Description) end umsg.End() umsg.Start("EmeraldCreditBalance",p) local db, e = mysql.connect("localhost","donations","donations","donations") if db == 0 then print(e) else local tb, succ, e = mysql.query(db,Format("SELECT COUNT(*) FROM `Emeraldpoints` WHERE SteamID=%q",p:SteamID())) if succ then if tb then tb, succ, e = mysql.query(db,Format("SELECT * FROM `Emeraldpoints` WHERE SteamID=%q",p:SteamID()))
You seem to already know how to work with mySQL, so hooking onto the PlayerDisconnected or EntityRemoved should be cake.. unless that's not your code.
Sorry, you need to Log In to post a reply to this thread.