Может кому-то понадобится.
Код:
local sqlite_dbname = "db_new_new"
local function sqlQuery(q)
local res = sql.Query(q)
if res == false then
error("Failure during SQL Query: "..sql.LastError())
return false
end
return res
end
function CreateTables()
if !sql.TableExists(sqlite_dbname) then
sqlQuery("CREATE TABLE "..sqlite_dbname.." ( steamid TEXT, XP INT, LEVEL INT, Unique(steamid))")
print("Таблица "..sqlite_dbname.." создана")
end
end
hook.Add( "Initialize", "Initialize", CreateTables )
function playerAccountValid( ply, st, a )
result = sql.QueryRow("SELECT steamid, XP, LEVEL FROM "..sqlite_dbname.." WHERE steamid = '"..ply:SteamID().."'")
if (result) then
print("Загружаем аккаунт игрока "..ply:Nick())
ply:PlayerSetXP(tonumber(result.XP)) -- вытаскиваем XP из result, после устанавиваем игроку его опыт.
ply:PlayerSetLevel(tonumber(result.LEVEL)) -- вытаскиваем LEVEL из result, после устанавливаем игроку его уровень.
saveCharacter(ply) -- сразу сохраняем статистику игрока
else
print("Создаем аккаунт игрока "..ply:Nick())
sql.Query("INSERT INTO "..sqlite_dbname.." (steamid, XP, LEVEL) VALUES ('"..ply:SteamID().."', 0, 1)")
playerAccountValid(ply) -- возвращаемся обратно к результатам, чтобы загрузить статистику игрока!
end
end
hook.Add("PlayerAuthed", "playerstats.auth", playerAccountValid)
function saveCharacter(ply)
sql.Query("UPDATE "..sqlite_dbname.." SET XP = "..ply:PlayerGetXP()..", LEVEL = "..ply:PlayerGetLevel().." WHERE steamid = '"..ply:SteamID().."'")
print("Статистика "..ply:Nick().." сохранена!")
end
concommand.Add("sm_savestats", function(ply,cmd,args)
saveCharacter(ply)
end)