From ace3c76112a839aaad34f4343cd924412310bbd3 Mon Sep 17 00:00:00 2001 From: sfan5 Date: Sat, 25 Jan 2020 21:19:29 +0100 Subject: Improve core.sound_play with ephemeral sounds and player exclusion --- src/script/lua_api/l_server.cpp | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'src/script/lua_api/l_server.cpp') diff --git a/src/script/lua_api/l_server.cpp b/src/script/lua_api/l_server.cpp index 7c083e652..00e849cdf 100644 --- a/src/script/lua_api/l_server.cpp +++ b/src/script/lua_api/l_server.cpp @@ -429,7 +429,7 @@ int ModApiServer::l_get_worldpath(lua_State *L) return 1; } -// sound_play(spec, parameters) +// sound_play(spec, parameters, [ephemeral]) int ModApiServer::l_sound_play(lua_State *L) { NO_MAP_LOCK_REQUIRED; @@ -437,8 +437,14 @@ int ModApiServer::l_sound_play(lua_State *L) read_soundspec(L, 1, spec); ServerSoundParams params; read_server_sound_params(L, 2, params); - s32 handle = getServer(L)->playSound(spec, params); - lua_pushinteger(L, handle); + bool ephemeral = lua_gettop(L) > 2 && readParam(L, 3); + if (ephemeral) { + getServer(L)->playSound(spec, params, true); + lua_pushnil(L); + } else { + s32 handle = getServer(L)->playSound(spec, params); + lua_pushinteger(L, handle); + } return 1; } @@ -446,7 +452,7 @@ int ModApiServer::l_sound_play(lua_State *L) int ModApiServer::l_sound_stop(lua_State *L) { NO_MAP_LOCK_REQUIRED; - int handle = luaL_checkinteger(L, 1); + s32 handle = luaL_checkinteger(L, 1); getServer(L)->stopSound(handle); return 0; } -- cgit v1.2.3