Well people, this time I give you this very useful script which cleans up your database from inactive players who have a long time offline. This works like the Nicaw AAC's.
But you must remember that the script will delete players in db with id > 6 so your Acc Manager and Player Samples have to be in 0 - 6 id row. MAKE A BACKUP OF YOUR DB before testing this script, although it will work fine.
What does this do? It deletes inactive players on server startup below specified level and time. It won't delete Account Manager neither player samples. nor players with group_id above 1.
Improvements and suggestions to my script are very welcomed. I credit Elf for the getDBPlayersCount() function.
Players below level with days offline will be deleted:
LEVEL_______DAYS OFFLINE
11 ----------------------5
20 ---------------------15
50 ---------------------30
100 --------------------60
150 --------------------90
globalevents.xml
Lua Code:
globalevents/scripts/dbclean.lua
But you must remember that the script will delete players in db with id > 6 so your Acc Manager and Player Samples have to be in 0 - 6 id row. MAKE A BACKUP OF YOUR DB before testing this script, although it will work fine.
What does this do? It deletes inactive players on server startup below specified level and time. It won't delete Account Manager neither player samples. nor players with group_id above 1.
Improvements and suggestions to my script are very welcomed. I credit Elf for the getDBPlayersCount() function.
Players below level with days offline will be deleted:
LEVEL_______DAYS OFFLINE
11 ----------------------5
20 ---------------------15
50 ---------------------30
100 --------------------60
150 --------------------90
globalevents.xml
Lua Code:
<globalevent name="dbclean" type="start" event="script" value="dbclean.lua"/>
globalevents/scripts/dbclean.lua
Lua:
-- [[> Automated Database Cleanup 1.1 //By Cybermaster <]] --
-- [[> Function getDBPlayersCount() by Elf <]] --
function getDBPlayersCount()
local result = db.getResult("SELECT COUNT(`id`) as `count` FROM `players`;")
local tmp = result:getDataInt("count")
result:free()
return tmp
end
function onStartup()
local DB_BEFORE = getDBPlayersCount()
--In each table, players with below specified level, and days of inactivity will be deleted from db on server startup
local cleanup = {
[1] = {level = 11, time = 5 * 24 * 60 * 60},
[2] = {level = 20, time = 15 * 24 * 60 * 60},
[3] = {level = 50, time = 30 * 24 * 60 * 60},
[4] = {level = 100, time = 60 * 24 * 60 * 60},
[5] = {level = 150, time = 90 * 24 * 60 * 60}
}
for i = 1, #cleanup do
db.executeQuery("DELETE FROM `players` WHERE `level` < ".. cleanup[i].level .." AND `id` > 6 AND `group_id` < 2 AND `lastlogin` < UNIX_TIMESTAMP() - ".. cleanup[i].time ..";")
end
local DB_NOW = DB_BEFORE - getDBPlayersCount()
if DB_NOW > 0 then
local text = ">> [DBCLEANUP] "..DB_NOW.." inactive players have been deleted from database."
print("" .. text .. "")
local file = io.open("data/logs/db_cleanup.txt", "a")
file:write("\n[".. os.date("%d %B %Y %X ", os.time()) .."] "..text.."")
file:close()
end
return true
end
Last edited: