From c8694676018d564cfbc68ca17f403b8b586fca83 Mon Sep 17 00:00:00 2001 From: sys4-fr Date: Fri, 7 Sep 2018 21:16:49 +0200 Subject: [PATCH] =?UTF-8?q?Remplissage=20du=20d=C3=A9p=C3=B4t.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 13 +++ cookie.lua | 155 ++++++++++++++++++++++++++++++++ depends.txt | 1 + init.lua | 209 +++++++++++++++++++++++++++++++++++++++++++ sounds/cookie.ogg | Bin 0 -> 9778 bytes sounds/failpoint.ogg | Bin 0 -> 15884 bytes 6 files changed, 378 insertions(+) create mode 100755 README.md create mode 100755 cookie.lua create mode 100755 depends.txt create mode 100755 init.lua create mode 100755 sounds/cookie.ogg create mode 100755 sounds/failpoint.ogg diff --git a/README.md b/README.md new file mode 100755 index 0000000..e74f138 --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +Minetest Mod Fail +======================== + +Minetest's mod Fail. Based on an idea By Mg (@LeMagnesium). + +Future features : +- Create a use for cookies and FailPoints +- Create a way to materialize cookies and FailPoints + +Version: +0.0 : Intial code, basic mod +0.1 : Added options about output stream for the messages and player's presence check +0.2 : Added sounds by Cyberpangolin, played when a FP/CK command is launched diff --git a/cookie.lua b/cookie.lua new file mode 100755 index 0000000..39651f2 --- /dev/null +++ b/cookie.lua @@ -0,0 +1,155 @@ +-- Cookies Recipe : + +if not rawget(_G,"data") then + data = {} +end + +data.oven = minetest.get_worldpath().."/cookies" +data.cookies = {} + +-- cookie_baker priv to create cookie +minetest.register_privilege("baker","Is able to bake CooKies and give them to anybody else") + +-- Loading cookies from oven +pntf = io.open(data.oven,"r") +if pntf == nil then + pntf = io.open(data.oven,"w") +else + repeat + local line = pntf:read() + if line == nil or line == "" then break end + data.cookies[line:split(" ")[1]] = line:split(" ")[2]+0 + until 1 == 0 -- Ok, not the best way to create a loop.. +end +io.close(pntf) +minetest.log("action","[FailPoints] CooKies baked") + +-- Global callbacks +minetest.register_on_shutdown(function() + -- Stocking CooKies + pntf = io.open(data.oven,"w") + for i,v in pairs(data.cookies) do + if v ~= 0 then + pntf:write(i.." "..v.."\n") + end + end + io.close(pntf) +end) + +minetest.register_chatcommand("cookie", { + params = " | ", + description = "CooKie baking command", + privs = {shout = true}, + func = function(name, parameters) + local paramlist = parameters:split(" ") + local param = paramlist[1] + local param2 = paramlist[2] + if param == "help" or param == nil then + minetest.chat_send_player(name,"CooKie recipe's help :") + minetest.chat_send_player(name,"/cookie | ") + minetest.chat_send_player(name,"Available subcommands :") + minetest.chat_send_player(name," - help : show this help") + minetest.chat_send_player(name," - view | view : View player's CooKies amount") + return + elseif param == "settings" then + if not minetest.get_player_privs(name)["server"] then + minetest.chat_send_player(name,"You're not allowed to perform this command. (Missing privilege : server)") + return + end + + minetest.chat_send_player(name,"=== CK_DEBUG_LINES SENT ===") + print("=== CK_DEBUG_LINES ===") + local send_admin = function(msg) + minetest.chat_send_player(name,msg) + end + + send_admin("CK File") + if pntf ~= nil then + send_admin("Found") + else + send_admin("Missing!") + end + table.foreach(data,print) + + return + elseif param == "view" then + if param2 == "" or param2 == nil then + local owncookies = 0 + if data.cookies[name] then + owncookies = data.cookies[name] + end + minetest.chat_send_player(name,"-CK- You own "..owncookies.." CooKies.") + return true + end + + if data.cookies[param2] ~= nil and data.cookies[param2] > 0 then + minetest.chat_send_player(name,"-CK- Player "..param2.." owns "..data.cookies[param2].." CooKies.") + else + minetest.chat_send_player(name,"-CK- Player "..param2.." doesn't seem to own any CooKie.") + end + else + + -- If not any known command + if name == param then + if minetest.get_player_privs(name)["baker"] == true then + minetest.log("error",name.." tried to create a CooKie by giving to himself") + minetest.chat_send_player(name,"-CK- Congratulation, you failed. Don't try to cook for yourself, don't be selfish :p") + else + minetest.log("action",name.."cooked himself a CooKie") + data.send_func(name,"-CK- You failed: It appears the name you entered is yours") + data.send_func(name,"Don't try to cook yourself CooKies, share them :p") + end + return false + end + + if param == "" then + minetest.chat_send_player(name,"-CK- You failed: Not enough parameters given, type /cookie help for help") + return false + end + + if not data.is_player_available(param) then + minetest.chat_send_player(name,"-CK- You failed: Sorry, "..param.." isn't online.") + return false + end + + -- Take, or not, cookies from name's account to give them to param + if minetest.get_player_privs(name)["baker"] ~= true then + if data.cookies[name] == nil or data.failpoints[name] == 0 then + minetest.chat_send_player(name,"You failed: You don't have enough CooKies.. Cook some!") + return false + elseif data.cookies[name] > 0 then + data.cookies[name] = data.cookies[name] -1 + end + else + minetest.log("action","[FailPoints] "..name.." has baked a CooKie.") + end + + -- Give/Add the CooKie to param' account + if data.cookies[param] == nil then + data.cookies[param] = 1 + else + data.cookies[param] = data.cookies[param]+1 + end + + minetest.log("action","[FailPoints] "..name.." has given a CooKie to "..param) + minetest.log("action","[FailPoints] "..param.." now own "..data.cookies[param].."CKs") + minetest.log("action","[FailPoints] "..name.." now own "..(data.cookies[name] or 0).."CKs") + minetest.sound_play({ + name = "cookie", + to_player = param, + gain = 0.1 + }) + local message_reason = "." + if param2 ~= nil then + local m_table = paramlist + table.remove(m_table,1) + message_reason = " because " + for _,k in ipairs(m_table) do + message_reason = message_reason..k.." " + end + end + data.send_func(param,"Congratulations "..param..", you get a CooKie" .. message_reason) + minetest.chat_send_player(name,"CooKie sent.") + end + end +}) diff --git a/depends.txt b/depends.txt new file mode 100755 index 0000000..20efb18 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +irc? diff --git a/init.lua b/init.lua new file mode 100755 index 0000000..8e8511d --- /dev/null +++ b/init.lua @@ -0,0 +1,209 @@ +-- Fails mod By Mg +--[[ + + /-----\-\ + / /--] \-\ + | |-] |-| + \ | /-/ + \-----/-/ + + "Congratulation, you win a failpoint." + +License GPLv2 + +]]-- + +-- The FailPoint mod by Mg. +-- The principal purpose of this mod is to allow FailPoints give, and the storage of them + +data = {} + +data.fp_file = minetest.get_worldpath().."/failpoints" +data.failpoints = {} +data.fp_version = 0.2 + +-- fp_create priv to create failpoints +minetest.register_privilege("fp_create","Is able to create FailPoints and give them to anybody else") + +-- Check configuration fields + +data.PUB_MSG = false +data.STRICT_PLAYER_CHECK = true + +if minetest.setting_getbool("fp_pubmsg") ~= nil then + data.PUB_MSG = minetest.setting_getbool("fp_pubmsg") +end +if minetest.setting_getbool("fp_strict_checking") ~= nil then + data.STRICT_PLAYER_CHECK = minetest.setting_getbool("fp_strict_checking") +end + +-- Configuration application + +data.send_func = function(name, msg) minetest.chat_send_player(name, msg) end + +if data.PUB_MSG then + data.send_func = function (name, msg) + if minetest.get_modpath("irc") then + irc:say(msg) + end + minetest.chat_send_all(msg) + end +end + +data.is_player_available = minetest.get_player_by_name + +if data.STRICT_PLAYER_CHECK == false then + data.is_player_available = function (name) + return (io.open(minetest.get_worldpath().."/players/"..name) ~= nil) + end +end + +-- Loading failpoints +pntf = io.open(data.fp_file,"r") +if pntf == nil then + pntf = io.open(data.fp_file,"w") +else + repeat + local line = pntf:read() + if line == nil or line == "" then break end + data.failpoints[line:split(" ")[1]] = line:split(" ")[2]+0 + until 1 == 0 -- Ok, not the best way to create a loop.. +end +minetest.log("action","[FailPoints] Loaded") + +-- Global callbacks +minetest.register_on_shutdown(function() + -- Saving failpoints + pntf = io.open(data.fp_file,"w") + for i,v in pairs(data.failpoints) do + if v ~= 0 then + pntf:write(i.." "..v.."\n") + end + end + io.close(pntf) +end) + +minetest.register_chatcommand("fail", { + params = " | ", + description = "Fail command", + privs = {shout = true}, + func = function(name, parameters) + local paramlist = parameters:split(" ") + local param = paramlist[1] + local param2 = paramlist[2] + if param == "version" then + minetest.chat_send_player(name,"-FP- Fail mod version: "..data.fp_version) + return true + elseif param == "help" or param == nil then + minetest.chat_send_player(name,"Failpoints available help :") + minetest.chat_send_player(name,"/fail | ") + minetest.chat_send_player(name,"Available subcommands :") + minetest.chat_send_player(name," - help : show this help") + minetest.chat_send_player(name," - version : show actual fail version") + minetest.chat_send_player(name," - view | view : View player's failpoints amount") + return + elseif param == "settings" then + if not minetest.get_player_privs(name)["server"] then + minetest.chat_send_player(name,"You're not allowed to perform this command. (Missing privilege : server)") + return + end + + minetest.chat_send_player(name,"=== FP_DEBUG_LINES SENT ===") + print("=== FP_DEBUG_LINES ===") + local send_admin = function(msg) + minetest.chat_send_player(name,msg) + end + + send_admin("FP File") + if pntf ~= nil then + send_admin("Found") + else + send_admin("Missing!") + end + table.foreach(data,print) + + return + elseif param == "view" then + if param2 == "" or param2 == nil then + local ownfail = 0 + if data.failpoints[name] then + ownfail = data.failpoints[name] + end + minetest.chat_send_player(name,"-FP- You own "..ownfail.." FailPoints.") + return true + end + + if data.failpoints[param2] ~= nil and data.failpoints[param2] > 0 then + minetest.chat_send_player(name,"-FP- Player "..param2.." owns "..data.failpoints[param2].." FailPoints.") + else + minetest.chat_send_player(name,"-FP- Player "..param2.." doesn't seem to own any FailPoint.") + end + else + + -- If not any known command + if name == param then + if minetest.get_player_privs(name)["fp_create"] == true then + minetest.log("error",name.." tried to create a failpoint by giving to himself") + data.send_func(name,"-FP- Congratulation, you failed " .. name .. " . Don't try to give to yourself :p") + else + minetest.log("action",name.."gave himself a FailPoint") + data.send_func(name,"-FP- You failed " .. name .. " : It appears the name you entered is yours") + data.send_func(name,"Don't try to give yourself failpoints, it's useless :p") + end + return false + end + + if param == "" then + minetest.chat_send_player(name,"-FP- You failed: Not enough parameters given, type /fail help for help") + return false + end + + if not data.is_player_available(param) then + minetest.chat_send_player(name,"-FP- You failed: Sorry, "..param.." isn't online.") + return false + end + + -- Take, or not, failpoints from name's account to give them to param + if minetest.get_player_privs(name)["fp_create"] ~= true then + if data.failpoints[name] == nil or data.failpoints[name] == 0 then + minetest.chat_send_player(name,"You failed: You don't have enough failpoints..") + return false + elseif data.failpoints[name] > 0 then + data.failpoints[name] = data.failpoints[name] -1 + end + else + minetest.log("action","[FailPoints] "..name.." has created a FailPoint.") + end + + -- Give/Add the failpoint to param' account + if data.failpoints[param] == nil then + data.failpoints[param] = 1 + else + data.failpoints[param] = data.failpoints[param]+1 + end + + minetest.log("action","[FailPoints] "..name.." has given a failpoint to "..param) + minetest.log("action","[FailPoints] "..param.." now own "..data.failpoints[param].."FPs") + minetest.log("action","[FailPoints] "..name.." now own "..(data.failpoints[name] or 0).."FPs") + local message_reason = "." + if param2 ~= nil then + local m_table = paramlist + table.remove(m_table,1) + message_reason = " because " + for _,k in ipairs(m_table) do + message_reason = message_reason..k.." " + end + end + data.send_func(param,"Congratulations "..param..", you win a failpoint" .. message_reason) + minetest.sound_play({ + name = "failpoint", + to_player = param, + gain = 1.0 + }) + minetest.chat_send_player(name,"FP sent.") + end + end +}) + +-- Create the same things for cookies +dofile(minetest.get_modpath("fail").."/cookie.lua") diff --git a/sounds/cookie.ogg b/sounds/cookie.ogg new file mode 100755 index 0000000000000000000000000000000000000000..2cc1d761eaabd7b726dd92935bad9a365691f249 GIT binary patch literal 9778 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 EAKNHBKL7v# literal 0 HcmV?d00001