From 9a0acb22c0a3049ac89369891f4fd8e23d69c904 Mon Sep 17 00:00:00 2001 From: crabman77 Date: Sat, 14 Feb 2015 23:55:06 +0100 Subject: [PATCH 1/3] mod soundset initial release --- mods/soundset/init.lua | 114 +++++++++++++++++++++++++++++++++++++++ mods/soundset/readme.txt | 6 +++ 2 files changed, 120 insertions(+) create mode 100644 mods/soundset/init.lua create mode 100644 mods/soundset/readme.txt diff --git a/mods/soundset/init.lua b/mods/soundset/init.lua new file mode 100644 index 00000000..af771cd8 --- /dev/null +++ b/mods/soundset/init.lua @@ -0,0 +1,114 @@ +minetest.log("action","[mod soundset] Loading...") + +sounds = {} +sounds.file = minetest.get_worldpath() .. "/sounds_config.txt" +sounds.gaindefault = { ["musique"] = 100, ["ambience"] = 100, ["mobs"] = 100, ["other"] = 100 } +sounds.gainplayers = {} + + +sounds.set_sound = function(name, param) + if param == "" then + minetest.chat_send_player(name, "/setsound ") + 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 ") + minetest.log("action", "invalid param, see /setsound ") + return + end + + if param_name ~= "musique" and param_name ~= "ambience" and param_name ~= "mobs" and param_name ~= "other" then + minetest.chat_send_player(name, "invalid param " .. param_name) + minetest.log("action", "invalid param, /setsound " .. param_name) + return + end + local value = tonumber(param_value) + if value == nil then + minetest.log("action", "invalid value, " ..param_value .. " must be number") + return + end + + if value < 0 then + value = 0 + elseif value > 100 then + value = 100 + end + + if sounds.gainplayers[name][param_name] == value then + minetest.chat_send_player(name, "ambience " .. param_name .. " already set to " .. value) + minetest.log("action", name ..", ambience " .. param_name .. " already set to " .. value) + return + end + + sounds.gainplayers[name][param_name] = value + minetest.chat_send_player(name, "sound " .. param_name .. " set to " .. value) + minetest.log("action", name ..", sound " .. param_name .. " set to " .. value) + local output = io.open(sounds.file, "w") + for i, v in pairs(sounds.gainplayers) do + output:write(v.musique .. " " .. v.ambience .. " " .. v.mobs .. " " .. v.other .. " " .. i .."\n") + end + io.close(output) + +end + + +sounds.get_gain = function(name, sound_type) + return sounds.gainplayers[name][sound_type]/50 +end + + +local function load_sounds_config() + local input = io.open(sounds.file, "r") + if input then + repeat + local musique = input:read("*n") + if musique == nil then + break + end + local ambience = input:read("*n") + + local mobs = input:read("*n") + + local other = input:read("*n") + + local name = input:read("*l") + + sounds.gainplayers[name:sub(2)] = {musique = musique, ambience = ambience, mobs = mobs, other = other} + until input:read(0) == nil + io.close(input) + end +end + + +load_sounds_config() + +minetest.register_chatcommand("setsound", { + params = "", + description = "set volume sound ", + privs = {}, + func = sounds.set_sound, +}) + +minetest.register_chatcommand("getsound", { + params = "", + description = "print volume sound ", + privs = {}, + func = function(name, param) + local conf = "" + for k, v in pairs(sounds.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 sounds.gainplayers[name] == nil then + sounds.gainplayers[name] = sounds.gaindefault + end +end) +minetest.log("action","[mod soundset] Loaded") + diff --git a/mods/soundset/readme.txt b/mods/soundset/readme.txt new file mode 100644 index 00000000..83f8b6a3 --- /dev/null +++ b/mods/soundset/readme.txt @@ -0,0 +1,6 @@ +-= soundset-MOD for MINETEST =- +by Mg and crabman77 + +YOUR mod can use THIS mod to have a volume that's adjustable by the player(s) + +0.1 - Initial Release From df18fba3a84c5dbc6878cf86e0c0870a87b3cfe2 Mon Sep 17 00:00:00 2001 From: crabman77 Date: Sun, 15 Feb 2015 00:41:50 +0100 Subject: [PATCH 2/3] adaptation pour utiliser le mod soundset modification pour incorporer le mod soundset qui permet aux joueurs de regler le volume de la musique et de l'ambience independament --- mods/ambience_modpack/ambience/depends.txt | 1 + mods/ambience_modpack/ambience/init.lua | 54 +++++++++++----------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/mods/ambience_modpack/ambience/depends.txt b/mods/ambience_modpack/ambience/depends.txt index 4ad96d51..29ce1879 100755 --- a/mods/ambience_modpack/ambience/depends.txt +++ b/mods/ambience_modpack/ambience/depends.txt @@ -1 +1,2 @@ default +soundset diff --git a/mods/ambience_modpack/ambience/init.lua b/mods/ambience_modpack/ambience/init.lua index b1ee9c9c..096a4a35 100755 --- a/mods/ambience_modpack/ambience/init.lua +++ b/mods/ambience_modpack/ambience/init.lua @@ -50,8 +50,8 @@ local music_volume = 0.3 ---------------------------------------------------------------------------------------------------- local ambiences local counter=0--***************** -local SOUNDVOLUME = 1 -local MUSICVOLUME = 1 +--local SOUNDVOLUME = 1 +--local MUSICVOLUME = 1 local sound_vol = 1 local last_x_pos = 0 local last_y_pos = 0 @@ -492,10 +492,10 @@ local play_sound = function(player, list, number, is_music) local gain = 1.0 if list[number].gain ~= nil then if is_music then - gain = list[number].gain*MUSICVOLUME + gain = list[number].gain*sounds.get_gain(player_name, "musique") --minetest.chat_send_all("gain music: " .. gain ) else - gain = list[number].gain*SOUNDVOLUME + gain = list[number].gain*sounds.get_gain(player_name, "ambience") --minetest.chat_send_all("gain sound: " .. gain ) end end @@ -521,7 +521,7 @@ local stop_sound = function(still_playing, player) local list = cave if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -531,7 +531,7 @@ local stop_sound = function(still_playing, player) local list = cave_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -541,7 +541,7 @@ local stop_sound = function(still_playing, player) local list = swimming_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -551,7 +551,7 @@ local stop_sound = function(still_playing, player) local list = beach if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -561,7 +561,7 @@ local stop_sound = function(still_playing, player) local list = beach_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -571,7 +571,7 @@ local stop_sound = function(still_playing, player) local list = desert if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -581,7 +581,7 @@ local stop_sound = function(still_playing, player) local list = desert_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -591,7 +591,7 @@ local stop_sound = function(still_playing, player) local list = night if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -601,7 +601,7 @@ local stop_sound = function(still_playing, player) local list = night_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -611,7 +611,7 @@ local stop_sound = function(still_playing, player) local list = day if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -621,7 +621,7 @@ local stop_sound = function(still_playing, player) local list = day_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -631,7 +631,7 @@ local stop_sound = function(still_playing, player) local list = music if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -641,7 +641,7 @@ local stop_sound = function(still_playing, player) local list = flowing_water if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -651,7 +651,7 @@ local stop_sound = function(still_playing, player) local list = flowing_water2 if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -661,7 +661,7 @@ local stop_sound = function(still_playing, player) local list = lava if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -671,7 +671,7 @@ local stop_sound = function(still_playing, player) local list = lava2 if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -681,7 +681,7 @@ local stop_sound = function(still_playing, player) local list = water if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -691,7 +691,7 @@ local stop_sound = function(still_playing, player) local list = water_surface if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) played_on_start = false end minetest.sound_stop(list.handler[player_name]) @@ -702,7 +702,7 @@ local stop_sound = function(still_playing, player) local list = water_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) -- minetest.chat_send_all("list.on_stop " .. list.on_stop ) played_on_start = false end @@ -717,7 +717,7 @@ local stop_sound = function(still_playing, player) -- minetest.chat_send_all("handler flying " ) if list.on_stop ~= nil then -- minetest.chat_send_all("onstop flying" ) - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) played_on_start = false end minetest.sound_stop(list.handler[player_name]) @@ -728,7 +728,7 @@ local stop_sound = function(still_playing, player) local list = splashing_water if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -757,7 +757,7 @@ minetest.register_globalstep(function(dtime) -- end if ambience.on_start ~= nil and played_on_start == false then played_on_start = true - minetest.sound_play(ambience.on_start, {to_player=player:get_player_name(),gain=SOUNDVOLUME}) + minetest.sound_play(ambience.on_start, {to_player=player:get_player_name(),gain=sounds.get_gain(player:get_player_name(), "ambience")}) end -- minetest.chat_send_all("ambience: " ..ambience ) -- if ambience.on_start ~= nil and played_on_start_flying == false then @@ -774,6 +774,7 @@ minetest.register_globalstep(function(dtime) end end) +--[[ minetest.register_chatcommand("svol", { params = "", description = "set volume of sounds, default 1 normal volume.", @@ -804,4 +805,5 @@ minetest.register_chatcommand("mvol", { -- ambiences = get_ambience(player) minetest.chat_send_player(name, "Music volume set to " .. param .. ".") end, }) +]] From 3d599fc0d1bc5828c8dc70d67eb5f6580c7bf836 Mon Sep 17 00:00:00 2001 From: crabman77 Date: Thu, 19 Feb 2015 20:33:59 +0100 Subject: [PATCH 3/3] add serialise and deserialise and default volume set to 50 add serialise and deserialise set default volume to 50 change variable name "musique" to "music" --- mods/ambience_modpack/ambience/init.lua | 46 ++++++------- mods/soundset/init.lua | 88 ++++++++++++------------- mods/soundset/readme.txt | 2 +- 3 files changed, 68 insertions(+), 68 deletions(-) diff --git a/mods/ambience_modpack/ambience/init.lua b/mods/ambience_modpack/ambience/init.lua index 096a4a35..6a98b8a9 100755 --- a/mods/ambience_modpack/ambience/init.lua +++ b/mods/ambience_modpack/ambience/init.lua @@ -492,7 +492,7 @@ local play_sound = function(player, list, number, is_music) local gain = 1.0 if list[number].gain ~= nil then if is_music then - gain = list[number].gain*sounds.get_gain(player_name, "musique") + gain = list[number].gain*sounds.get_gain(player_name, "music") --minetest.chat_send_all("gain music: " .. gain ) else gain = list[number].gain*sounds.get_gain(player_name, "ambience") @@ -521,7 +521,7 @@ local stop_sound = function(still_playing, player) local list = cave if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -531,7 +531,7 @@ local stop_sound = function(still_playing, player) local list = cave_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -541,7 +541,7 @@ local stop_sound = function(still_playing, player) local list = swimming_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -551,7 +551,7 @@ local stop_sound = function(still_playing, player) local list = beach if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -561,7 +561,7 @@ local stop_sound = function(still_playing, player) local list = beach_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -571,7 +571,7 @@ local stop_sound = function(still_playing, player) local list = desert if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -581,7 +581,7 @@ local stop_sound = function(still_playing, player) local list = desert_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -591,7 +591,7 @@ local stop_sound = function(still_playing, player) local list = night if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -601,7 +601,7 @@ local stop_sound = function(still_playing, player) local list = night_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -611,7 +611,7 @@ local stop_sound = function(still_playing, player) local list = day if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -621,7 +621,7 @@ local stop_sound = function(still_playing, player) local list = day_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -631,7 +631,7 @@ local stop_sound = function(still_playing, player) local list = music if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -641,7 +641,7 @@ local stop_sound = function(still_playing, player) local list = flowing_water if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -651,7 +651,7 @@ local stop_sound = function(still_playing, player) local list = flowing_water2 if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -661,7 +661,7 @@ local stop_sound = function(still_playing, player) local list = lava if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -671,7 +671,7 @@ local stop_sound = function(still_playing, player) local list = lava2 if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -681,7 +681,7 @@ local stop_sound = function(still_playing, player) local list = water if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -691,7 +691,7 @@ local stop_sound = function(still_playing, player) local list = water_surface if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) played_on_start = false end minetest.sound_stop(list.handler[player_name]) @@ -702,7 +702,7 @@ local stop_sound = function(still_playing, player) local list = water_frequent if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) -- minetest.chat_send_all("list.on_stop " .. list.on_stop ) played_on_start = false end @@ -717,7 +717,7 @@ local stop_sound = function(still_playing, player) -- minetest.chat_send_all("handler flying " ) if list.on_stop ~= nil then -- minetest.chat_send_all("onstop flying" ) - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) played_on_start = false end minetest.sound_stop(list.handler[player_name]) @@ -728,7 +728,7 @@ local stop_sound = function(still_playing, player) local list = splashing_water if list.handler[player_name] ~= nil then if list.on_stop ~= nil then - minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=sounds.get_gain(player_name, "ambience")}) + minetest.sound_play(list.on_stop, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player_name, "ambience")}) end minetest.sound_stop(list.handler[player_name]) list.handler[player_name] = nil @@ -757,7 +757,7 @@ minetest.register_globalstep(function(dtime) -- end if ambience.on_start ~= nil and played_on_start == false then played_on_start = true - minetest.sound_play(ambience.on_start, {to_player=player:get_player_name(),gain=sounds.get_gain(player:get_player_name(), "ambience")}) + minetest.sound_play(ambience.on_start, {to_player=player:get_player_name(),gain=0.5*sounds.get_gain(player:get_player_name(), "ambience")}) end -- minetest.chat_send_all("ambience: " ..ambience ) -- if ambience.on_start ~= nil and played_on_start_flying == false then diff --git a/mods/soundset/init.lua b/mods/soundset/init.lua index af771cd8..4941b7a6 100644 --- a/mods/soundset/init.lua +++ b/mods/soundset/init.lua @@ -2,32 +2,32 @@ minetest.log("action","[mod soundset] Loading...") sounds = {} sounds.file = minetest.get_worldpath() .. "/sounds_config.txt" -sounds.gaindefault = { ["musique"] = 100, ["ambience"] = 100, ["mobs"] = 100, ["other"] = 100 } +sounds.gaindefault = { ["music"] = 50, ["ambience"] = 50, ["mobs"] = 50, ["other"] = 50 } sounds.gainplayers = {} sounds.set_sound = function(name, param) if param == "" then - minetest.chat_send_player(name, "/setsound ") + minetest.chat_send_player(name, "/setsound ") 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 ") - minetest.log("action", "invalid param, see /setsound ") + minetest.chat_send_player(name, "invalid param, /setsound ") + minetest.log("action", "invalid param, see /setsound ") return end - if param_name ~= "musique" and param_name ~= "ambience" and param_name ~= "mobs" and param_name ~= "other" then + 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) minetest.log("action", "invalid param, /setsound " .. param_name) return - end + end local value = tonumber(param_value) if value == nil then minetest.log("action", "invalid value, " ..param_value .. " must be number") return - end + end if value < 0 then value = 0 @@ -44,39 +44,39 @@ sounds.set_sound = function(name, param) sounds.gainplayers[name][param_name] = value minetest.chat_send_player(name, "sound " .. param_name .. " set to " .. value) minetest.log("action", name ..", sound " .. param_name .. " set to " .. value) - local output = io.open(sounds.file, "w") - for i, v in pairs(sounds.gainplayers) do - output:write(v.musique .. " " .. v.ambience .. " " .. v.mobs .. " " .. v.other .. " " .. i .."\n") - end - io.close(output) + + local input = io.open(sounds.file, "w") + if input then + input:write(minetest.serialize(sounds.gainplayers)) + input:close() + else + minetest.log("action","echec d'ouverture (mode:w) de " .. sounds.file) + end end sounds.get_gain = function(name, sound_type) - return sounds.gainplayers[name][sound_type]/50 + if name == nil or name == "" then + return 1 + end + local gain = sounds.gainplayers[name][sound_type] + if gain == nil then + return 1 + end + return gain/50 end + local function load_sounds_config() - local input = io.open(sounds.file, "r") - if input then - repeat - local musique = input:read("*n") - if musique == nil then - break - end - local ambience = input:read("*n") - - local mobs = input:read("*n") - - local other = input:read("*n") - - local name = input:read("*l") - - sounds.gainplayers[name:sub(2)] = {musique = musique, ambience = ambience, mobs = mobs, other = other} - until input:read(0) == nil - io.close(input) + local file = io.open(sounds.file, "r") + if file then + sounds.gainplayers = minetest.deserialize(file:read("*all")) + file:close() + end + if sounds.gainplayers == nil then + sounds.gainplayers = {} end end @@ -84,24 +84,24 @@ end load_sounds_config() minetest.register_chatcommand("setsound", { - params = "", - description = "set volume sound ", - privs = {}, - func = sounds.set_sound, + params = " ", + description = "set volume sound ", + privs = {}, + func = sounds.set_sound, }) minetest.register_chatcommand("getsound", { - params = "", - description = "print volume sound ", - privs = {}, - func = function(name, param) - local conf = "" - for k, v in pairs(sounds.gainplayers[name]) do - conf = conf .. " " .. k .. ":" .. v - end + params = "", + description = "print volume sound ", + privs = {}, + func = function(name, param) + local conf = "" + for k, v in pairs(sounds.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 + end }) minetest.register_on_joinplayer(function(player) diff --git a/mods/soundset/readme.txt b/mods/soundset/readme.txt index 83f8b6a3..2d37f72b 100644 --- a/mods/soundset/readme.txt +++ b/mods/soundset/readme.txt @@ -1,5 +1,5 @@ -= soundset-MOD for MINETEST =- -by Mg and crabman77 +by LeMagnesium and crabman77 YOUR mod can use THIS mod to have a volume that's adjustable by the player(s)