diff --git a/mods/stats/init.lua b/mods/stats/init.lua deleted file mode 100644 index b34a0d7..0000000 --- a/mods/stats/init.lua +++ /dev/null @@ -1,196 +0,0 @@ ---[[ -Stats Mod -Copyright (C) 2013 PilzAdam - -This program is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -]] - --- --- API --- - -stats = {} -local playerstats = {} - ---[[ -def = { - name = "digged_nodes", - description = function(value) - return " - Digged nodes: "..value) - end, -} -]] -stats.registered_stats = {} -function stats.register_stat(def) - table.insert(stats.registered_stats, def) -end - -function stats.set_stat(player, name, value) - local pname = player - if type(pname) ~= "string" then - pname = player:get_player_name() - end - if not playerstats[pname] then - playerstats[pname] = {} - end - playerstats[pname][name] = value -end - -function stats.increase_stat(player, name, value) - local pname = player - if type(pname) ~= "string" then - pname = player:get_player_name() - end - if not playerstats[pname] then - playerstats[pname] = {} - end - if not playerstats[pname][name] then - playerstats[pname][name] = 0 - end - playerstats[pname][name] = playerstats[pname][name] + value -end - -function stats.get_stat(player, name) - local pname = player - if type(pname) ~= "string" then - pname = player:get_player_name() - end - if not playerstats[pname] then - playerstats[pname] = {} - end - if not playerstats[pname][name] then - playerstats[pname][name] = 0 - end - return playerstats[pname][name] -end - --- --- End API --- - -stats.register_stat({ - name = "digged_nodes", - description = function(value) - return " - Digged nodes: "..value - end, -}) - -stats.register_stat({ - name = "placed_nodes", - description = function(value) - return " - Placed nodes: "..value - end, -}) - -stats.register_stat({ - name = "died", - description = function(value) - return " - Died: "..value - end, -}) - -stats.register_stat({ - name = "played_time", - description = function(time) - time = math.floor(time) - local timestring = "" .. (time%60) .. "s" - time = math.floor(time/60) - if time > 0 then - timestring = (time%60) .. "m " .. timestring - end - time = math.floor(time/60) - if time > 0 then - timestring = (time%24) .. "h " .. timestring - end - time = math.floor(time/24) - if time > 0 then - timestring = time .. "d " .. timestring - end - return " - Time played: "..timestring - end, -}) - -local file = io.open(minetest:get_worldpath().."/stats.txt", "r") -if file then - local table = minetest.deserialize(file:read("*all")) - if type(table) == "table" then - playerstats = table - else - minetest.log("error", "Corrupted stats file") - end - file:close() -end - -local function save_stats() - local file = io.open(minetest:get_worldpath().."/stats.txt", "w") - if file then - file:write(minetest.serialize(playerstats)) - file:close() - else - minetest.log("error", "Can't save stats") - end -end - -local timer = 0 -local timer2 = 0 -minetest.register_globalstep(function(dtime) - timer = timer + dtime - timer2 = timer2 + dtime - -- NOTE: Set this to a higher value to remove some load from the server - if timer < 0 then - return - end - for _,player in ipairs(minetest.get_connected_players()) do - stats.increase_stat(player, "played_time", timer) - end - timer = 0 - if timer2 > 30 then - save_stats() - end -end) - -minetest.register_on_shutdown(function() - save_stats() -end) - -minetest.register_on_dignode(function(pos, oldnode, player) - stats.increase_stat(player, "digged_nodes", 1) -end) - -minetest.register_on_placenode(function(pos, newnode, player, oldnode, itemstack) - stats.increase_stat(player, "placed_nodes", 1) -end) - -minetest.register_on_dieplayer(function(player) - stats.increase_stat(player, "died", 1) -end) - -minetest.register_chatcommand("stats", { - params = "", - description = "Prints the stats of the player", - privs = {}, - func = function(name, param) - local playername = name - local player = minetest.get_player_by_name(param) - if player then - playername = player:get_player_name() - end - - minetest.chat_send_player(name, "Stats for "..playername..":") - for _,def in ipairs(stats.registered_stats) do - local value = stats.get_stat(playername, def.name) - minetest.chat_send_player(name, def.description(value)) - end - end, -})