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..6a98b8a9 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, "music") --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=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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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=SOUNDVOLUME}) + 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 @@ -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, }) +]] diff --git a/mods/soundset/init.lua b/mods/soundset/init.lua new file mode 100644 index 00000000..4941b7a6 --- /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 = { ["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 ") + 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 ~= "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 + 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 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) + 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 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 + + +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..2d37f72b --- /dev/null +++ b/mods/soundset/readme.txt @@ -0,0 +1,6 @@ +-= soundset-MOD for MINETEST =- +by LeMagnesium and crabman77 + +YOUR mod can use THIS mod to have a volume that's adjustable by the player(s) + +0.1 - Initial Release