Server
unknown
plain_text
3 years ago
4.8 kB
10
Indexable
-------------------------------
Config = {
KillData = "Zombie kills",
LevelData = "Level",
DeathsData = "deaths",
Top = 100
};
-------------------------------
function getTable()
local DB = dbPoll(WilliemDB:query("SELECT * FROM dataPlayersss ORDER BY kills, level, deaths DESC LIMIT 100"..Config["Top"]), -1);
if #DB > 0 then
return DB
else
return false
end
end
-------------------------------
function getSortedTables()
local SortedTable = {}
local tablee = getTable()
if tablee then
for index, value in ipairs(tablee) do
local acc = getAccount(value["acc"])
table.insert(SortedTable,
{
name = value["player"],
acc = value["acc"],
kills = value["kills"],
level = value["level"],
deaths = value["deaths"],
status = acc and getAccountPlayer(acc) and "Online" or "Offline"
});
end
return SortedTable;
end
end
-------------------------------
function databaseplayers(player)
if not isGuestAccount(getPlayerAccount(player)) then
local acc = getAccountName(getPlayerAccount(player))
local q = dbPoll(WilliemDB:query("SELECT * FROM dataPlayersss WHERE acc = ?", acc), -1)
if q and #q > 0 then
WilliemDB:exec("UPDATE dataPlayersss SET level = ?, kills = ?, status = ?, player = ? WHERE acc = ?", getElementData(player,Config["LevelData"]) or 0, getElementData(player,Config["KillData"]) or 0, status, getPlayerName(player), acc);
else
WilliemDB:exec("INSERT INTO dataPlayersss VALUES(?, ?, ?, ?, 0, 0)", getPlayerName(player), acc, getElementData(player,Config["KillData"]) or 0, getElementData(player,Config["LevelData"]) or 0, getElementData(player,Config["DeathsData"]) or 0, status);
end
end
end
-------------------------------
function loadDataPlayer(player)
local a = dbPoll(WilliemDB:query("SELECT * FROM dataPlayersss WHERE acc = ?", acc), -1)
if (#a > 0) then
setElementData(player, Config["KillData"], a[1].kills)
setElementData(player, Config["LevelData"], a[1].level)
setElementData(player, Config["DeathsData"], a[1].deaths)
return true
end
return false
end
-------------------------------
addEvent("top:ranks1", true)
addEventHandler("top:ranks1", root, function()
if source == client then
databaseplayers(source);
triggerClientEvent(client, "top:ranks3", client, getSortedTables(),Config["Top"]);
end
end);
-------------------------------
addEvent("top:ranks2", true)
addEventHandler("top:ranks2", root, function()
if source == client then
if not isGuestAccount(getPlayerAccount(client)) then
databaseplayers(source);
end
end
end);
-------------------------------
addEventHandler("onResourceStart", resourceRoot, function()
WilliemDB = Connection.create("sqlite","databases.db")
WilliemDB:exec("CREATE TABLE IF NOT EXISTS dataPlayersss (player TEXT, acc TEXT, kills INTEGER DEFAULT 0, level INTEGER DEFAULT 0, deaths INTEGER DEFAULT 0, status)");
local player = getElementsByType("player")
for i=1, #player do
loadDataPlayer(player[i])
end
end);
-------------------------------
addEventHandler("onPlayerLogin", root, function()
triggerClientEvent("setOnline", source)
loadDataPlayer(source);
end)
-------------------------------
function playerQuit()
triggerClientEvent("setOffline", source)
end
addEventHandler("onPlayerLogout", root, playerQuit)
-------------------------------
addEventHandler("onPlayerWasted", root, function(_,killer,wep,part)
if killer and killer ~= source then
if getElementType(killer) == "player" then
local killerAccount = getPlayerAccount(killer)
if not isGuestAccount(killerAccount) then
local killerName = getAccountName(killerAccount)
WilliemDB:exec("UPDATE dataPlayersss SET kills = kills + 1 WHERE acc = ?",killerName)
end
end
local sourceAccount = getPlayerAccount(source)
if not isGuestAccount(sourceAccount) then
local sourceName = getAccountName(sourceAccount)
WilliemDB:exec("UPDATE dataPlayersss SET deaths = deaths + 1 WHERE acc = ?",sourceName)
end
end
end)
-------------------------------
addEventHandler("onElementDataChange", root, function(key, old, new)
if (getElementType(source) == "player") then
if (key == Config["KillData"] or key == Config["LevelData"]) then
local new = tonumber(new);
if (not new or not old) then
return false
end
databaseplayers(source);
end
end
end);
-------------------------------Editor is loading...