Remplissage du dépôt.
This commit is contained in:
		
							
								
								
									
										40
									
								
								README.md
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										40
									
								
								README.md
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
soundset MOD for MINETEST
 | 
			
		||||
========================
 | 
			
		||||
 | 
			
		||||
by Mg (@LeMagnesium) and @crabman77
 | 
			
		||||
 | 
			
		||||
YOUR mod can use THIS mod to have a volume that's adjustable by the player(s)
 | 
			
		||||
 | 
			
		||||
EXAMPLE
 | 
			
		||||
 | 
			
		||||
minetest.sound_play("music_file", {to_player=player:get_player_name(),gain=sounds.get_gain(player:get_player_name(), "music")})
 | 
			
		||||
 | 
			
		||||
OR
 | 
			
		||||
 | 
			
		||||
minetest.sound_play("mob_sound", {to_player=player:get_player_name(),gain=sounds.get_gain(player:get_player_name(), "mobs")})
 | 
			
		||||
 | 
			
		||||
OR
 | 
			
		||||
 | 
			
		||||
minetest.sound_play("wind_sound", {to_player=player:get_player_name(),gain=sounds.get_gain(player:get_player_name(), "ambience")})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
commandchat
 | 
			
		||||
 | 
			
		||||
/soundset : display menu
 | 
			
		||||
 | 
			
		||||
/soundsetg : display player config
 | 
			
		||||
 | 
			
		||||
/soundsets <music|ambience|mobs|other> <number> : set volume
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
Licenses images: 
 | 
			
		||||
	Author : Obani CC-BY
 | 
			
		||||
 | 
			
		||||
0.1 - Initial Release
 | 
			
		||||
 | 
			
		||||
0.2 - change default volume to 50, add serialise|deserialise to read|write config file
 | 
			
		||||
 | 
			
		||||
0.3 - add menu setting and button for unified_inventory and chatcommand to display menu
 | 
			
		||||
							
								
								
									
										1
									
								
								depends.txt
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										1
									
								
								depends.txt
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
unified_inventory?
 | 
			
		||||
							
								
								
									
										230
									
								
								init.lua
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										230
									
								
								init.lua
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,230 @@
 | 
			
		||||
minetest.log("action","[mod soundset] Loading...")
 | 
			
		||||
 | 
			
		||||
soundset = {}
 | 
			
		||||
soundset.file = minetest.get_worldpath() .. "/sounds_config.txt"
 | 
			
		||||
soundset.gainplayers = {}
 | 
			
		||||
local tmp = {}
 | 
			
		||||
tmp["music"] = {}
 | 
			
		||||
tmp["ambience"]  = {}
 | 
			
		||||
tmp["other"] = {}
 | 
			
		||||
 | 
			
		||||
local function save_sounds_config()
 | 
			
		||||
	local input = io.open(soundset.file, "w")
 | 
			
		||||
	if input then
 | 
			
		||||
		input:write(minetest.serialize(soundset.gainplayers))
 | 
			
		||||
		input:close()
 | 
			
		||||
	else
 | 
			
		||||
		minetest.log("action","echec d'ouverture (mode:w) de " .. soundset.file)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
local function load_sounds_config()
 | 
			
		||||
	local file = io.open(soundset.file, "r")
 | 
			
		||||
	if file then
 | 
			
		||||
		soundset.gainplayers = minetest.deserialize(file:read("*all"))
 | 
			
		||||
		file:close()
 | 
			
		||||
	end
 | 
			
		||||
	if soundset.gainplayers == nil or type(soundset.gainplayers) ~= "table" then
 | 
			
		||||
		soundset.gainplayers = {}
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
load_sounds_config()
 | 
			
		||||
 | 
			
		||||
soundset.set_sound = function(name, param)
 | 
			
		||||
	if param == "" then
 | 
			
		||||
		minetest.chat_send_player(name, "/setsound <music|ambience|mobs|other> <number>")
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	local param_name, param_value = param:match("^(%S+)%s(%S+)$")
 | 
			
		||||
	if param_name == nil or param_value == nil then
 | 
			
		||||
		minetest.chat_send_player(name, "invalid param, /setsound <music|ambience|mobs|other> <number>")
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if param_name ~= "music" and param_name ~= "ambience" and param_name ~= "mobs" and param_name ~= "other" then
 | 
			
		||||
		minetest.chat_send_player(name, "invalid param " .. param_name)
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	local value = tonumber(param_value)
 | 
			
		||||
	if value == nil then
 | 
			
		||||
		minetest.chat_send_player(name, "invalid value, " ..param_value .. " must be number")
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if value < 0 then
 | 
			
		||||
		value = 0
 | 
			
		||||
	elseif value > 100 then
 | 
			
		||||
		value = 100
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if soundset.gainplayers[name][param_name] == value then
 | 
			
		||||
		minetest.chat_send_player(name, "volume " .. param_name .. " already set to " .. value)
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	soundset.gainplayers[name][param_name] = value
 | 
			
		||||
	minetest.chat_send_player(name, "sound " .. param_name .. " set to " .. value)
 | 
			
		||||
	save_sounds_config()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
soundset.get_gain = function(name, sound_type)
 | 
			
		||||
	if name == nil or name == "" then
 | 
			
		||||
		return 1
 | 
			
		||||
	end
 | 
			
		||||
	if not soundset.gainplayers[name] then return 1 end
 | 
			
		||||
	local gain = soundset.gainplayers[name][sound_type]
 | 
			
		||||
	if gain == nil then
 | 
			
		||||
		return 1
 | 
			
		||||
	end
 | 
			
		||||
	return gain/100
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local inc = function(value)
 | 
			
		||||
	value = value + 5
 | 
			
		||||
	if value > 100 then
 | 
			
		||||
		value = 100
 | 
			
		||||
	end
 | 
			
		||||
	return value
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local dec = function(value)
 | 
			
		||||
	value = value - 5
 | 
			
		||||
	if value < 0 then
 | 
			
		||||
		value = 0
 | 
			
		||||
	end
 | 
			
		||||
	return value
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
local formspec = "size[6,6]"..
 | 
			
		||||
				"label[2,0;Sound Menu]"..
 | 
			
		||||
				"label[0,1.2;MUSIC]"..
 | 
			
		||||
				"button[1.6,1;1,1;vmusic;-]"..
 | 
			
		||||
				"label[2.7,1.2;%s]"..
 | 
			
		||||
				"button[3.5,1;1,1;vmusic;+]"..
 | 
			
		||||
				"label[0,2.2;AMBIENCE]"..
 | 
			
		||||
				"button[1.6,2;1,1;vambience;-]"..
 | 
			
		||||
				"label[2.7,2.2;%s]"..
 | 
			
		||||
				"button[3.5,2;1,1;vambience;+]"..
 | 
			
		||||
				"label[0,3.2;OTHER]"..
 | 
			
		||||
				"button[1.6,3;1,1;vother;-]"..
 | 
			
		||||
				"label[2.7,3.2;%s]"..
 | 
			
		||||
				"button[3.5,3;1,1;vother;+]"..
 | 
			
		||||
				"button_exit[0.5,5.2;1.5,1;abort;Abort]"..
 | 
			
		||||
				"button_exit[4,5.2;1.5,1;abort;Ok]"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
local on_show_settings = function(name, music, ambience, other)
 | 
			
		||||
	tmp["music"][name] = music
 | 
			
		||||
	tmp["ambience"][name] = ambience
 | 
			
		||||
	tmp["other"][name] = other
 | 
			
		||||
	minetest.show_formspec( name, "soundset:settings", string.format(formspec, tostring(music), tostring(ambience), tostring(other) ))
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local clear_tmp = function(name)
 | 
			
		||||
	tmp["music"][name] = nil
 | 
			
		||||
	tmp["ambience"][name] = nil
 | 
			
		||||
	tmp["other"][name] = nil
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
 | 
			
		||||
	if formname == "soundset:settings" then
 | 
			
		||||
		local name = player:get_player_name()
 | 
			
		||||
		if not name or name == "" then return end
 | 
			
		||||
		local fmusic = tmp["music"][name] or 50
 | 
			
		||||
		local fambience = tmp["ambience"][name] or 50
 | 
			
		||||
		local fother = tmp["other"][name] or 50
 | 
			
		||||
		if fields["abort"] == "Ok" then
 | 
			
		||||
			if soundset.gainplayers[name]["music"] ~= fmusic or soundset.gainplayers[name]["ambience"] ~= fambience or soundset.gainplayers[name]["other"] ~= fother then
 | 
			
		||||
				soundset.gainplayers[name]["music"] = fmusic
 | 
			
		||||
				soundset.gainplayers[name]["ambience"] = fambience
 | 
			
		||||
				soundset.gainplayers[name]["other"] = fother
 | 
			
		||||
				save_sounds_config()
 | 
			
		||||
			end
 | 
			
		||||
			clear_tmp(name)
 | 
			
		||||
			return
 | 
			
		||||
		elseif fields["abort"] == "Abort" then
 | 
			
		||||
			clear_tmp(name)
 | 
			
		||||
			return
 | 
			
		||||
		elseif fields["vmusic"] == "+" then
 | 
			
		||||
			fmusic = inc(fmusic)
 | 
			
		||||
		elseif fields["vmusic"] == "-" then
 | 
			
		||||
			fmusic = dec(fmusic)
 | 
			
		||||
		elseif fields["vambience"] == "+" then
 | 
			
		||||
			fambience = inc(fambience)
 | 
			
		||||
		elseif fields["vambience"] == "-" then
 | 
			
		||||
			fambience = dec(fambience)
 | 
			
		||||
		elseif fields["vother"] == "+" then
 | 
			
		||||
			fother = inc(fother)
 | 
			
		||||
		elseif fields["vother"] == "-" then
 | 
			
		||||
			fother = dec(fother)
 | 
			
		||||
		elseif fields["quit"] == "true" then
 | 
			
		||||
			clear_tmp(name)
 | 
			
		||||
			return
 | 
			
		||||
		else
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		on_show_settings(name, fmusic, fambience, fother)
 | 
			
		||||
	end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if (minetest.get_modpath("unified_inventory")) then
 | 
			
		||||
	unified_inventory.register_button("menu_soundset", {
 | 
			
		||||
		type = "image",
 | 
			
		||||
		image = "soundset_menu_icon.png",
 | 
			
		||||
		tooltip = "sounds menu ",
 | 
			
		||||
		show_with = false, --Modif MFF (Crabman 30/06/2015)
 | 
			
		||||
		action = function(player)
 | 
			
		||||
			local name = player:get_player_name()
 | 
			
		||||
			if not name then return end
 | 
			
		||||
			on_show_settings(name, soundset.gainplayers[name]["music"], soundset.gainplayers[name]["ambience"], soundset.gainplayers[name]["other"])
 | 
			
		||||
		end,
 | 
			
		||||
	})
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("soundset", {
 | 
			
		||||
	params = "",
 | 
			
		||||
	description = "Display volume menu formspec",
 | 
			
		||||
	privs = {interact=true},
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		if not name then return end
 | 
			
		||||
		on_show_settings(name, soundset.gainplayers[name]["music"], soundset.gainplayers[name]["ambience"], soundset.gainplayers[name]["other"])
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("soundsets", {
 | 
			
		||||
	params = "<music|ambience|mobs|other> <number>",
 | 
			
		||||
	description = "Set volume sound <music|ambience|mobs|other>",
 | 
			
		||||
	privs = {interact=true},
 | 
			
		||||
	func = soundset.set_sound,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("soundsetg", {
 | 
			
		||||
	params = "",
 | 
			
		||||
	 description = "Display volume sound <music|ambience|mobs|other>",
 | 
			
		||||
	privs = {interact=true},
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		local conf = ""
 | 
			
		||||
		for k, v in pairs(soundset.gainplayers[name]) do
 | 
			
		||||
			conf = conf .. " " .. k .. ":" .. v
 | 
			
		||||
		end
 | 
			
		||||
		minetest.chat_send_player(name, "sounds conf " .. conf)
 | 
			
		||||
		minetest.log("action","Player ".. name .. " sound conf " .. conf)
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_on_joinplayer(function(player)
 | 
			
		||||
	local name = player:get_player_name()
 | 
			
		||||
	if soundset.gainplayers[name] == nil then
 | 
			
		||||
		soundset.gainplayers[name] = { ["music"] = 50, ["ambience"] = 50, ["mobs"] = 50, ["other"] = 50 }
 | 
			
		||||
	end
 | 
			
		||||
end)
 | 
			
		||||
 | 
			
		||||
minetest.log("action","[mod soundset] Loaded")
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								textures/soundset_menu_icon.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								textures/soundset_menu_icon.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 1.1 KiB  | 
		Reference in New Issue
	
	Block a user