1
0
mirror of https://github.com/sys4-fr/server-nalc.git synced 2024-10-02 01:10:31 +02:00
server-nalc/mods/fail/cookie.lua
LeMagnesium 88f0fa339d Adding fail mod
(I'm gonna speak french a bit there..)
Je propose dans cette pull-request un mod dont je vous ai déjà sûrement parlé,
le mod fail. Fail est un petit mod, qui n'a (pour le moment) pas de but précis
à part l'animation et le fun sur le serveur. Le mod permet à une petite élite,
au départ, de créer des failpoints et des cookies pour les donner à des joueurs
qui réussissent une action particulière, ou qui se rattent lamentablement de
sorte que ce soit quelque chose de particulièrement drôle.
Par exemple, si un joueur envoie :
:msg Bidule J'ai trouvé du mese vers x,y,z rien que pour moi niark!

Et que tout le monde (IRC compris ici) le voit, c'est un joli failpoint que le
joueur recevra au lieu de ses mese diamonds/blocks!

Le mod de manière générale sert juste (pour le moment) à mettre un peu plus de
fun sur le serveur, mais les autres joueurs semblent l'attendre avec impatience,
et si il est intégré, je me chargerai de l'intégrer dans d'autres mods, comme
death_messages, pour des morts stupides dans la lave, l'acide, l'eau, etc...

Si vous voulez suivre le développement seul du mod il est [ici](http://github.com/LeMagnesium/fail).
2014-12-29 20:19:23 +01:00

120 lines
4.0 KiB
Lua

-- 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
--print(line)
data.cookies[line:split(" ")[1]] = line:split(" ")[2]+0
until 1 == 0 -- Ok, not the best way to create a loop..
end
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
end)
minetest.register_chatcommand("cookie", {
params = "<subcommand> <subcommandparam> | <playername>",
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
core.chat_send_player(name,"CooKie recipe's help :")
core.chat_send_player(name,"/cookie <subcommand> | <playername>")
core.chat_send_player(name,"Available subcommands :")
core.chat_send_player(name," - help : show this help")
core.chat_send_player(name," - view | view <playername> : View player's CooKies amount")
return
elseif param == "view" then
if param2 == "" or param2 == nil then
local owncookies = 0
if data.cookies[name] then
owncookies = data.cookies[name]
end
core.chat_send_player(name,"-CK- You own "..owncookies.." CooKies.")
return true
end
if data.cookies[param2] ~= nil and data.cookies[param2] > 0 then
core.chat_send_player(name,"-CK- Player "..param2.." owns "..data.cookies[param2].." CooKies.")
else
core.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")
core.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")
core.chat_send_player(name,"-CK- You failed: It appears the name you entered is yours")
core.chat_send_player(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 minetest.get_player_by_name(param) then
core.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
core.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")
core.chat_send_player(param,"Congratulations "..param..", you get a CooKie.")
core.chat_send_player(name,"CooKie sent.")
end
end
})