mirror of
				https://github.com/sys4-fr/server-nalc.git
				synced 2025-10-31 12:35:22 +01:00 
			
		
		
		
	Merge branch 'master' of github.com:Ombridride/minetest-minetestforfun-server
This commit is contained in:
		
							
								
								
									
										1
									
								
								mods/_misc/depends.txt
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								mods/_misc/depends.txt
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1 @@ | ||||
| interact | ||||
| @@ -6,10 +6,12 @@ minetest.register_globalstep(function(dtime) | ||||
| 	for _,player in ipairs(minetest.get_connected_players()) do | ||||
| 		local name = player:get_player_name() | ||||
| 		if not minetest.check_player_privs(name, {interact=true}) then | ||||
| 			if not interact.blacklist[name] then | ||||
| 				if minetest.check_player_privs(name, {shout=true}) then | ||||
| 					minetest.chat_send_player(name, "Hey " .. name .. " ! Pour pouvoir construire et intéragir sur ce serveur, tu dois lire les règles du serveur et les accepter. Tape /rules.") | ||||
| 					minetest.chat_send_player(name, "Hey " .. name .. " ! To build and interact on this server, you have to read the rules of our server and agree them. Type /rules.") | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| end) | ||||
|   | ||||
| @@ -203,6 +203,7 @@ minetest.register_chatcommand("rules",{ | ||||
| 	privs = interact.priv, | ||||
| 	func = function (name,params) | ||||
| 	local player = minetest.get_player_by_name(name) | ||||
| 		if not interact.blacklist[name] then | ||||
| 			if interact.screen1 ~= false then | ||||
| 				minetest.after(1, function() | ||||
| 					minetest.show_formspec(name, "welcome", make_formspec(player)) | ||||
| @@ -216,12 +217,21 @@ minetest.register_chatcommand("rules",{ | ||||
| 					minetest.show_formspec(name, "rules", make_formspec3(player)) | ||||
| 				end) | ||||
| 			end | ||||
| 		else | ||||
| 			minetest.log("action", "[interact] Blacklisted player " .. name .. " tried to get back " .. | ||||
| 				"his revoked privilege") | ||||
| 			return false, "Sorry, you've been blacklisted by " .. | ||||
| 				(interact.blacklist[name].emitter or "<unknown>") .. " on " .. | ||||
| 				(interact.blacklist[name].date or "<unknown>") .. " . Thus, you can't use " .. | ||||
| 				" this command to get interact back. Sorry." | ||||
| 		end | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| function start_formspecs(player) | ||||
| 	local name = player:get_player_name() | ||||
| 	if not minetest.get_player_privs(name).interact then | ||||
| 		if not interact.blacklist[name] then | ||||
| 			if interact.screen1 ~= false then | ||||
| 				minetest.show_formspec(name, "welcome", make_formspec(player)) | ||||
| 			elseif interact.screen2 ~= false then | ||||
| @@ -230,18 +240,102 @@ function start_formspecs(player) | ||||
| 				minetest.show_formspec(name, "rules", make_formspec3(player)) | ||||
| 			end | ||||
| 		end | ||||
| 	end | ||||
| end | ||||
|  | ||||
| minetest.register_on_joinplayer(start_formspecs) | ||||
|  | ||||
| minetest.register_chatcommand("rules", { | ||||
| 	description = "Obtain interact privilege / Obtenir le privilege interact", | ||||
| 	params = "", | ||||
| 	privs = {}, | ||||
| 	func = function(name) | ||||
| 		local player = minetest.get_player_by_name(name) | ||||
| 		if player then | ||||
| 			start_formspecs(player) | ||||
|  | ||||
| -- Blacklist | ||||
|  | ||||
| interact.blacklist = {} | ||||
|  | ||||
| minetest.register_chatcommand("unblacklist", { | ||||
| 	params = "<playername>", | ||||
| 	description = "Remove a player from the interact blacklist", | ||||
| 	privs = {basic_privs = true, interact = true}, | ||||
| 	func = function(name, param) | ||||
| 		if param == "" then | ||||
| 			return false, "Give a player's name to remove from the blacklist." | ||||
| 		end | ||||
|  | ||||
| 		if not interact.blacklist[param] then | ||||
| 			return true, "Player " .. param " is not actually blacklisted." | ||||
| 		end | ||||
|  | ||||
| 		if name == param then | ||||
| 			return true, "Ahahaha. Well tried looser." | ||||
| 		end | ||||
|  | ||||
| 		minetest.log("action", "[interact] " .. name .. " removed " .. param .. " from " .. | ||||
| 			"blacklist (added on " .. (interact.blacklist[param].date or "<unknown>") .. | ||||
| 			" by " .. (interact.blacklist[param].emitter or "<unknown>") .. ")") | ||||
| 		interact.blacklist[param] = nil | ||||
| 		return true, "Done." | ||||
| 	end | ||||
| 	end, | ||||
| }) | ||||
|  | ||||
| minetest.register_chatcommand("blacklist", { | ||||
| 	params = "<playername>", | ||||
| 	description = "Blacklist a player. [S]He won't be able to use /rules.", | ||||
| 	privs = {basic_privs = true, interact = true}, | ||||
| 	func = function(name, param) | ||||
| 		if param == "" then | ||||
| 			return false, "Give a player's name to blacklist." | ||||
| 		end | ||||
|  | ||||
| 		local blackfile = io.open(minetest.get_worldpath() .. "/players/" .. param, "r") | ||||
| 		if not blackfile then | ||||
| 			return false, "Player doesn't exist." | ||||
| 		end | ||||
| 		io.close(blackfile) | ||||
|  | ||||
| 		if name == param then | ||||
| 			return true, "You know this wouldn't work, right?" | ||||
| 		end | ||||
|  | ||||
| 		if interact.blacklist[param] then | ||||
| 			return true, "Player already blacklisted." | ||||
| 		end | ||||
|  | ||||
| 		if minetest.get_player_privs(param).interact == true then | ||||
| 			return true, "Warning: This player has interact! Use revoke before blacklisting." | ||||
| 		end | ||||
|  | ||||
| 		interact.blacklist[param] = { | ||||
| 			emitter = name, | ||||
| 			date = os.date("%m/%d/%Y") | ||||
| 		} | ||||
| 		minetest.log("action", "[interact] " .. name .. " added " .. param .. " on /rules blacklist.") | ||||
| 		return true, "Player " .. param .. " blacklisted." | ||||
| 	end | ||||
| }) | ||||
|  | ||||
| function load_blacklist() | ||||
| 	local file = io.open(minetest.get_worldpath().."/interact_blacklist.txt", "r") | ||||
| 	if not file then | ||||
| 		file = io.open(minetest.get_worldpath().."/interact_blacklist.txt", "w") | ||||
| 		if not file then | ||||
| 			minetest.log("error", "[interact] Error opening blacklist file") | ||||
| 			return | ||||
| 		end | ||||
| 		minetest.log("action", "[interact] Blacklist created") | ||||
| 	end | ||||
| 	interact.blacklist = minetest.deserialize(file:read()) | ||||
| 	minetest.log("action", "[interact] Blacklist loaded") | ||||
| 	file:close() | ||||
| end | ||||
|  | ||||
| function save_blacklist() | ||||
| 	local file = io.open(minetest.get_worldpath().."/interact_blacklist.txt", "w") | ||||
| 	if not file then | ||||
| 		minetest.log("error", "[interact] Error opening blacklist file") | ||||
| 		return | ||||
| 	end | ||||
| 	file:write(minetest.serialize(interact.blacklist)) | ||||
| 	minetest.log("action", "[interact] Blacklist saved") | ||||
| 	file:close() | ||||
| end | ||||
|  | ||||
| minetest.register_on_shutdown(save_blacklist) | ||||
| load_blacklist() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user