forked from mff/broomstick
Remplissage du dépôt.
This commit is contained in:
commit
564b79823c
4
depends.txt
Executable file
4
depends.txt
Executable file
@ -0,0 +1,4 @@
|
||||
mana
|
||||
default
|
||||
mobs
|
||||
farming
|
124
init.lua
Executable file
124
init.lua
Executable file
@ -0,0 +1,124 @@
|
||||
local broomstick_time = 120 -- Seconds
|
||||
local broomstick_mana = 190
|
||||
local broomstick_actual_users = {}
|
||||
local had_fly_privilege = {}
|
||||
local privs = {}
|
||||
|
||||
-- broomstick file
|
||||
users_file = minetest.get_worldpath() .. "/broomstick_users.txt"
|
||||
--load broomstick file
|
||||
local file = io.open(users_file, "r")
|
||||
if file then
|
||||
had_fly_privilege = minetest.deserialize(file:read("*all"))
|
||||
file:close()
|
||||
file = nil
|
||||
if not had_fly_privilege or type(had_fly_privilege) ~= "table" then
|
||||
had_fly_privilege = {}
|
||||
end
|
||||
else
|
||||
minetest.log("error", "[broomstick] Can not open broomstick_users.txt file !")
|
||||
end
|
||||
|
||||
|
||||
-- funtion save broomstick file
|
||||
local function save()
|
||||
local input = io.open(users_file, "w")
|
||||
if input then
|
||||
input:write(minetest.serialize(had_fly_privilege))
|
||||
input:close()
|
||||
else
|
||||
minetest.log("error","[broomstick] Open failed (mode:w) of " .. users_file)
|
||||
end
|
||||
end
|
||||
|
||||
-- on join_player remove priv fly
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local playername = player:get_player_name()
|
||||
if had_fly_privilege[playername] ~= nil then
|
||||
privs = minetest.get_player_privs(playername)
|
||||
privs.fly = nil
|
||||
minetest.set_player_privs(playername, privs)
|
||||
had_fly_privilege[playername] = nil
|
||||
save()
|
||||
end
|
||||
end)
|
||||
|
||||
-- Broomstick timer
|
||||
local function broomstick_end(playername)
|
||||
minetest.chat_send_player(playername, "WARNING ! You'll fall in 10 seconds !")
|
||||
minetest.after(10, function(playername)
|
||||
-- Send a message...
|
||||
minetest.chat_send_player(playername, "End of broomstick. I hope you're not falling down...")
|
||||
-- Set player privs...
|
||||
privs = minetest.get_player_privs(playername)
|
||||
privs["fly"] = nil
|
||||
minetest.set_player_privs(playername, privs)
|
||||
-- Remove the player in the list.
|
||||
for i = 1, #broomstick_actual_users do
|
||||
if broomstick_actual_users[i] == playername then
|
||||
table.remove(broomstick_actual_users, i)
|
||||
end
|
||||
end
|
||||
-- Rewrite the broomstick_users.txt file.
|
||||
had_fly_privilege[playername] = nil
|
||||
save()
|
||||
end, playername)
|
||||
end
|
||||
|
||||
-- Register broomstick
|
||||
minetest.register_craftitem("broomstick:broomstick", {
|
||||
description = "Broomstick",
|
||||
inventory_image = "broomstick.png",
|
||||
stack_max = 1,
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
local playername = user:get_player_name()
|
||||
if mana.get(playername) >= broomstick_mana then
|
||||
local has_already_a_broomstick = false
|
||||
for i = 1, #broomstick_actual_users do
|
||||
if broomstick_actual_users[i] == playername then
|
||||
has_already_a_broomstick = true
|
||||
end
|
||||
end
|
||||
if not has_already_a_broomstick then
|
||||
privs = minetest.get_player_privs(playername)
|
||||
-- Set player privs...
|
||||
if not privs.fly == true then
|
||||
-- Rewrite the broomstick_users.txt file.
|
||||
had_fly_privilege[playername] = true
|
||||
save()
|
||||
privs.fly = true
|
||||
minetest.set_player_privs(playername, privs)
|
||||
else
|
||||
minetest.chat_send_player(playername, "You known you can fly by yourself, don't you?")
|
||||
return
|
||||
end
|
||||
-- Send a message...
|
||||
minetest.chat_send_player(playername, "You can now fly during " .. tostring(broomstick_time) .. " seconds.")
|
||||
minetest.log("action", "Player " .. playername .. " has use a broomstick.")
|
||||
-- Subtract mana...
|
||||
mana.subtract(playername, broomstick_mana)
|
||||
-- Insert player in the list.
|
||||
table.insert(broomstick_actual_users, playername)
|
||||
-- And add the function in queue
|
||||
minetest.after(broomstick_time-10, broomstick_end, playername)
|
||||
-- Remove broomstick.
|
||||
return ItemStack("")
|
||||
else
|
||||
minetest.chat_send_player(playername, "You already have a broomstick ! Please wait until the end of your actual broomstick.")
|
||||
end
|
||||
else
|
||||
minetest.chat_send_player(playername, "You must have " .. tostring(broomstick_mana) .. " of mana to use a broomstick !")
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- Craft
|
||||
minetest.register_craft({
|
||||
output = "broomstick:broomstick",
|
||||
recipe = {{"","","farming:string",},
|
||||
{"default:stick","default:stick","mobs:minotaur_lots_of_fur",},
|
||||
{"","","farming:string",},},
|
||||
})
|
||||
|
||||
|
||||
minetest.log("info", "[OK] broomstick")
|
BIN
textures/broomstick.png
Executable file
BIN
textures/broomstick.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1021 B |
Loading…
Reference in New Issue
Block a user