Hello, I am curious if -
Is it possible to make OTClient choose a random startup music from (1 to 5) ?
Have a good day and thanks for reading me.
local startupMusicTracks = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
"/sounds/startup5",
}
local musicFilename = "/sounds/startup"
local musicFilename = startupMusicTracks[math.random(1,#startupMusicTracks)]
function startup()
-- Play startup music (The Silver...
Hello, I am curious if -
Is it possible to make OTClient choose a random startup music from (1 to 5) ?
Have a good day and thanks for reading me.
local startupMusicTracks = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
"/sounds/startup5",
}
local musicFilename = "/sounds/startup"
local musicFilename = startupMusicTracks[math.random(1,#startupMusicTracks)]
function startup()
-- Play startup music (The Silver Tree, by Mattias Westlund)
Glad to help, cheersShadowsong im your fan !! Thx for taking your time
Have a great day!
local startupMusicTracks = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
"/sounds/startup5",
}
local musicChannel = g_sounds.getChannel(1)
function setMusic(filename)
musicFilename = filename
if not g_game.isOnline() then
musicChannel:stop()
musicChannel:enqueue(musicFilename, 3)
end
end
function reloadScripts()
g_textures.clearCache()
g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)
end
local message = tr('All modules and scripts were reloaded.')
modules.game_textmessage.displayGameMessage(message)
print(message)
end
function startup()
local musicFilename = startupMusicTracks[math.random(1,#startupMusicTracks)]
-- Play startup music (The Silver Tree, by Mattias Westlund)
musicChannel:enqueue(musicFilename, 3)
connect(g_game, { onGameStart = function() musicChannel:stop(3) end })
connect(g_game, { onGameEnd = function()
g_sounds.stopAll()
musicChannel:enqueue(musicFilename, 3)
end })
-- Check for startup errors
local errtitle = nil
local errmsg = nil
if g_graphics.getRenderer():lower():match('gdi generic') then
errtitle = tr('Graphics card driver not detected')
errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.')
end
-- Show entergame
if errmsg or errtitle then
local msgbox = displayErrorBox(errtitle, errmsg)
msgbox.onOk = function() EnterGame.firstShow() end
else
EnterGame.firstShow()
end
end
function init()
connect(g_app, { onRun = startup,
onExit = exit })
g_window.setMinimumSize({ width = 600, height = 480 })
g_sounds.preload(musicFilename)
-- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then
g_window.setFullscreen(true)
else
-- window size
local size = { width = 800, height = 600 }
size = g_settings.getSize('window-size', size)
g_window.resize(size)
-- window position, default is the screen center
local displaySize = g_window.getDisplaySize()
local defaultPos = { x = (displaySize.width - size.width)/2,
y = (displaySize.height - size.height)/2 }
local pos = g_settings.getPoint('window-pos', defaultPos)
pos.x = math.max(pos.x, 0)
pos.y = math.max(pos.y, 0)
g_window.move(pos)
-- window maximized?
local maximized = g_settings.getBoolean('window-maximized', false)
if maximized then g_window.maximize() end
end
g_window.setTitle(g_app.getName())
g_window.setIcon('/images/clienticon')
-- poll resize events
g_window.poll()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then
g_settings.set('uuid', g_crypt.getMachineUUID())
g_settings.save()
end
end
function terminate()
disconnect(g_app, { onRun = startup,
onExit = exit })
-- save window configs
g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized())
end
function exit()
g_logger.info("Exiting application..")
end
You forgot to add this below the table@Shadowsong It says im unable to load client module
Code:local startupMusicTracks = { "/sounds/startup1", "/sounds/startup2", "/sounds/startup3", "/sounds/startup4", "/sounds/startup5", } local musicChannel = g_sounds.getChannel(1) function setMusic(filename) musicFilename = filename if not g_game.isOnline() then musicChannel:stop() musicChannel:enqueue(musicFilename, 3) end end function reloadScripts() g_textures.clearCache() g_modules.reloadModules() local script = '/' .. g_app.getCompactName() .. 'rc.lua' if g_resources.fileExists(script) then dofile(script) end local message = tr('All modules and scripts were reloaded.') modules.game_textmessage.displayGameMessage(message) print(message) end function startup() local musicFilename = startupMusicTracks[math.random(1,#startupMusicTracks)] -- Play startup music (The Silver Tree, by Mattias Westlund) musicChannel:enqueue(musicFilename, 3) connect(g_game, { onGameStart = function() musicChannel:stop(3) end }) connect(g_game, { onGameEnd = function() g_sounds.stopAll() musicChannel:enqueue(musicFilename, 3) end }) -- Check for startup errors local errtitle = nil local errmsg = nil if g_graphics.getRenderer():lower():match('gdi generic') then errtitle = tr('Graphics card driver not detected') errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.') end -- Show entergame if errmsg or errtitle then local msgbox = displayErrorBox(errtitle, errmsg) msgbox.onOk = function() EnterGame.firstShow() end else EnterGame.firstShow() end end function init() connect(g_app, { onRun = startup, onExit = exit }) g_window.setMinimumSize({ width = 600, height = 480 }) g_sounds.preload(musicFilename) -- initialize in fullscreen mode on mobile devices if g_window.getPlatformType() == "X11-EGL" then g_window.setFullscreen(true) else -- window size local size = { width = 800, height = 600 } size = g_settings.getSize('window-size', size) g_window.resize(size) -- window position, default is the screen center local displaySize = g_window.getDisplaySize() local defaultPos = { x = (displaySize.width - size.width)/2, y = (displaySize.height - size.height)/2 } local pos = g_settings.getPoint('window-pos', defaultPos) pos.x = math.max(pos.x, 0) pos.y = math.max(pos.y, 0) g_window.move(pos) -- window maximized? local maximized = g_settings.getBoolean('window-maximized', false) if maximized then g_window.maximize() end end g_window.setTitle(g_app.getName()) g_window.setIcon('/images/clienticon') -- poll resize events g_window.poll() g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts) -- generate machine uuid, this is a security measure for storing passwords if not g_crypt.setMachineUUID(g_settings.get('uuid')) then g_settings.set('uuid', g_crypt.getMachineUUID()) g_settings.save() end end function terminate() disconnect(g_app, { onRun = startup, onExit = exit }) -- save window configs g_settings.set('window-size', g_window.getUnmaximizedSize()) g_settings.set('window-pos', g_window.getUnmaximizedPos()) g_settings.set('window-maximized', g_window.isMaximized()) end function exit() g_logger.info("Exiting application..") end
local musicFilename = startupMusicTracks[math.random(1,#startupMusicTracks)]
local startupMusicTracks = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
"/sounds/startup5",
}
local musicFilename = startupMusicTracks[math.random(1,#startupMusicTracks)]
local musicChannel = g_sounds.getChannel(1)
local startupMusicTracks = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
"/sounds/startup5",
}
local musicFilename = startupMusicTracks[math.random(1,#startupMusicTracks)]
local musicChannel = g_sounds.getChannel(1)
function setMusic(filename)
musicFilename = filename
if not g_game.isOnline() then
musicChannel:stop()
musicChannel:enqueue(musicFilename, 3)
end
end
function reloadScripts()
g_textures.clearCache()
g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)
end
local message = tr('All modules and scripts were reloaded.')
modules.game_textmessage.displayGameMessage(message)
print(message)
end
function startup()
-- Play startup music (The Silver Tree, by Mattias Westlund)
musicChannel:enqueue(musicFilename, 3)
connect(g_game, { onGameStart = function() musicChannel:stop(3) end })
connect(g_game, { onGameEnd = function()
g_sounds.stopAll()
musicChannel:enqueue(musicFilename, 3)
end })
-- Check for startup errors
local errtitle = nil
local errmsg = nil
if g_graphics.getRenderer():lower():match('gdi generic') then
errtitle = tr('Graphics card driver not detected')
errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.')
end
-- Show entergame
if errmsg or errtitle then
local msgbox = displayErrorBox(errtitle, errmsg)
msgbox.onOk = function() EnterGame.firstShow() end
else
EnterGame.firstShow()
end
end
function init()
connect(g_app, { onRun = startup,
onExit = exit })
g_window.setMinimumSize({ width = 600, height = 480 })
g_sounds.preload(musicFilename)
-- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then
g_window.setFullscreen(true)
else
-- window size
local size = { width = 800, height = 600 }
size = g_settings.getSize('window-size', size)
g_window.resize(size)
-- window position, default is the screen center
local displaySize = g_window.getDisplaySize()
local defaultPos = { x = (displaySize.width - size.width)/2,
y = (displaySize.height - size.height)/2 }
local pos = g_settings.getPoint('window-pos', defaultPos)
pos.x = math.max(pos.x, 0)
pos.y = math.max(pos.y, 0)
g_window.move(pos)
-- window maximized?
local maximized = g_settings.getBoolean('window-maximized', false)
if maximized then g_window.maximize() end
end
g_window.setTitle(g_app.getName())
g_window.setIcon('/images/clienticon')
-- poll resize events
g_window.poll()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then
g_settings.set('uuid', g_crypt.getMachineUUID())
g_settings.save()
end
end
function terminate()
disconnect(g_app, { onRun = startup,
onExit = exit })
-- save window configs
g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized())
end
function exit()
g_logger.info("Exiting application..")
end
function init()
-- Configure initial music. -----------------------------------
local listOfMusic = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4"
}
math.randomseed(os.time())
musicFilename = listOfMusic[math.random(1, #listOfMusic)]
--------------------- End music config -----------------------
local musicFilename = "/sounds/startup"
local musicChannel = g_sounds.getChannel(1)
function setMusic(filename)
musicFilename = filename
if not g_game.isOnline() then
musicChannel:stop()
musicChannel:enqueue(musicFilename, 3)
end
end
function reloadScripts()
g_textures.clearCache()
g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)
end
local message = tr('All modules and scripts were reloaded.')
modules.game_textmessage.displayGameMessage(message)
print(message)
end
function startup()
-- Play startup music (The Silver Tree, by Mattias Westlund)
musicChannel:enqueue(musicFilename, 3)
connect(g_game, { onGameStart = function() musicChannel:stop(3) end })
connect(g_game, { onGameEnd = function()
g_sounds.stopAll()
musicChannel:enqueue(musicFilename, 3)
end })
-- Check for startup errors
local errtitle = nil
local errmsg = nil
if g_graphics.getRenderer():lower():match('gdi generic') then
errtitle = tr('Graphics card driver not detected')
errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.')
end
-- Show entergame
if errmsg or errtitle then
local msgbox = displayErrorBox(errtitle, errmsg)
msgbox.onOk = function() EnterGame.firstShow() end
else
EnterGame.firstShow()
end
end
function init()
-- Configure initial music. -----------------------------------
local listOfMusic = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
}
math.randomseed(os.time())
musicFilename = listOfMusic[math.random(1, #listOfMusic)]
--------------------- End music config -----------------------
connect(g_app, { onRun = startup,
onExit = exit })
g_window.setMinimumSize({ width = 600, height = 480 })
g_sounds.preload(musicFilename)
-- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then
g_window.setFullscreen(true)
else
-- window size
local size = { width = 800, height = 600 }
size = g_settings.getSize('window-size', size)
g_window.resize(size)
-- window position, default is the screen center
local displaySize = g_window.getDisplaySize()
local defaultPos = { x = (displaySize.width - size.width)/2,
y = (displaySize.height - size.height)/2 }
local pos = g_settings.getPoint('window-pos', defaultPos)
pos.x = math.max(pos.x, 0)
pos.y = math.max(pos.y, 0)
g_window.move(pos)
-- window maximized?
local maximized = g_settings.getBoolean('window-maximized', false)
if maximized then g_window.maximize() end
end
g_window.setTitle(g_app.getName())
g_window.setIcon('/images/clienticon')
-- poll resize events
g_window.poll()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then
g_settings.set('uuid', g_crypt.getMachineUUID())
g_settings.save()
end
end
function terminate()
disconnect(g_app, { onRun = startup,
onExit = exit })
-- save window configs
g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized())
end
function exit()
g_logger.info("Exiting application..")
end
Cant manage to randomize still :C I thought it was working because it was playing another song than usual but doesnt does the random pick yet@Shadowsong
Code:local musicFilename = "/sounds/startup" local musicChannel = g_sounds.getChannel(1) function setMusic(filename) musicFilename = filename if not g_game.isOnline() then musicChannel:stop() musicChannel:enqueue(musicFilename, 3) end end function reloadScripts() g_textures.clearCache() g_modules.reloadModules() local script = '/' .. g_app.getCompactName() .. 'rc.lua' if g_resources.fileExists(script) then dofile(script) end local message = tr('All modules and scripts were reloaded.') modules.game_textmessage.displayGameMessage(message) print(message) end function startup() -- Play startup music (The Silver Tree, by Mattias Westlund) musicChannel:enqueue(musicFilename, 3) connect(g_game, { onGameStart = function() musicChannel:stop(3) end }) connect(g_game, { onGameEnd = function() g_sounds.stopAll() musicChannel:enqueue(musicFilename, 3) end }) -- Check for startup errors local errtitle = nil local errmsg = nil if g_graphics.getRenderer():lower():match('gdi generic') then errtitle = tr('Graphics card driver not detected') errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.') end -- Show entergame if errmsg or errtitle then local msgbox = displayErrorBox(errtitle, errmsg) msgbox.onOk = function() EnterGame.firstShow() end else EnterGame.firstShow() end end function init() -- Configure initial music. ----------------------------------- local listOfMusic = { "/sounds/startup1", "/sounds/startup2", "/sounds/startup3", "/sounds/startup4", } math.randomseed(os.time()) musicFilename = listOfMusic[math.random(1, #listOfMusic)] --------------------- End music config ----------------------- connect(g_app, { onRun = startup, onExit = exit }) g_window.setMinimumSize({ width = 600, height = 480 }) g_sounds.preload(musicFilename) -- initialize in fullscreen mode on mobile devices if g_window.getPlatformType() == "X11-EGL" then g_window.setFullscreen(true) else -- window size local size = { width = 800, height = 600 } size = g_settings.getSize('window-size', size) g_window.resize(size) -- window position, default is the screen center local displaySize = g_window.getDisplaySize() local defaultPos = { x = (displaySize.width - size.width)/2, y = (displaySize.height - size.height)/2 } local pos = g_settings.getPoint('window-pos', defaultPos) pos.x = math.max(pos.x, 0) pos.y = math.max(pos.y, 0) g_window.move(pos) -- window maximized? local maximized = g_settings.getBoolean('window-maximized', false) if maximized then g_window.maximize() end end g_window.setTitle(g_app.getName()) g_window.setIcon('/images/clienticon') -- poll resize events g_window.poll() g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts) -- generate machine uuid, this is a security measure for storing passwords if not g_crypt.setMachineUUID(g_settings.get('uuid')) then g_settings.set('uuid', g_crypt.getMachineUUID()) g_settings.save() end end function terminate() disconnect(g_app, { onRun = startup, onExit = exit }) -- save window configs g_settings.set('window-size', g_window.getUnmaximizedSize()) g_settings.set('window-pos', g_window.getUnmaximizedPos()) g_settings.set('window-maximized', g_window.isMaximized()) end function exit() g_logger.info("Exiting application..") end
local musicPaths = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
}
local musicPath = musicPaths[1]
local musicChannel = g_sounds.getChannel(1)
function setMusic(filename)
musicPath = filename
if not g_game.isOnline() then
musicChannel:stop()
musicChannel:enqueue(musicPath, 3)
end
end
function reloadScripts()
g_textures.clearCache()
g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)
end
local message = tr('All modules and scripts were reloaded.')
modules.game_textmessage.displayGameMessage(message)
print(message)
end
function startup()
musicPath = musicPaths[math.random(#musicPaths)]
-- Play startup music (The Silver Tree, by Mattias Westlund)
musicChannel:enqueue(musicPath, 3)
connect(g_game, { onGameStart = function() musicChannel:stop(3) end })
connect(g_game, { onGameEnd = function()
g_sounds.stopAll()
musicChannel:enqueue(musicPath, 3)
end })
-- Check for startup errors
local errtitle = nil
local errmsg = nil
if g_graphics.getRenderer():lower():match('gdi generic') then
errtitle = tr('Graphics card driver not detected')
errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.')
end
-- Show entergame
if errmsg or errtitle then
local msgbox = displayErrorBox(errtitle, errmsg)
msgbox.onOk = function() EnterGame.firstShow() end
else
EnterGame.firstShow()
end
end
function init()
connect(g_app, { onRun = startup,
onExit = exit })
g_window.setMinimumSize({ width = 600, height = 480 })
-- preloading musics
for _, path in ipairs(musicPaths) do
g_sounds.preload(path)
end
-- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then
g_window.setFullscreen(true)
else
-- window size
local size = { width = 800, height = 600 }
size = g_settings.getSize('window-size', size)
g_window.resize(size)
-- window position, default is the screen center
local displaySize = g_window.getDisplaySize()
local defaultPos = { x = (displaySize.width - size.width)/2,
y = (displaySize.height - size.height)/2 }
local pos = g_settings.getPoint('window-pos', defaultPos)
pos.x = math.max(pos.x, 0)
pos.y = math.max(pos.y, 0)
g_window.move(pos)
-- window maximized?
local maximized = g_settings.getBoolean('window-maximized', false)
if maximized then g_window.maximize() end
end
g_window.setTitle(g_app.getName())
g_window.setIcon('/images/clienticon')
-- poll resize events
g_window.poll()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then
g_settings.set('uuid', g_crypt.getMachineUUID())
g_settings.save()
end
end
function terminate()
disconnect(g_app, { onRun = startup,
onExit = exit })
-- save window configs
g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized())
end
function exit()
g_logger.info("Exiting application..")
end
math.randomseed(os.time())
musicFilename = listOfMusic[math.random(1, #listOfMusic)]
musicPath = musicPaths[math.random(#musicPaths)]
So my problem its that #musicPaths or #listOfMusic arent getting linked inside math randomizing
So my problem its that #musicPaths or #listOfMusic arent getting linked inside math randomizing
Playing now: /sounds/startup2
--- /sounds/startup3
--- /sounds/startup4
--- /sounds/startup1
--- /sounds/startup1
--- /sounds/startup3
Playing now: /sounds/startup1
--- /sounds/startup4
--- /sounds/startup1
--- /sounds/startup4
--- /sounds/startup4
--- /sounds/startup2
Playing now: /sounds/startup2
--- /sounds/startup4
--- /sounds/startup3
--- /sounds/startup4
--- /sounds/startup2
--- /sounds/startup3
Playing now: /sounds/startup1
--- /sounds/startup4
--- /sounds/startup2
--- /sounds/startup2
--- /sounds/startup4
--- /sounds/startup3
Playing now: /sounds/startup2
--- /sounds/startup1
--- /sounds/startup1
--- /sounds/startup1
--- /sounds/startup1
--- /sounds/startup3
local musicFilename = "/sounds/startup1"
local musicChannel = g_sounds.getChannel(1)
function setMusic(filename)
musicFilename = filename
if not g_game.isOnline() then
musicChannel:stop()
musicChannel:enqueue(musicFilename, 3)
end
end
function reloadScripts()
g_textures.clearCache()
g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)
end
local message = tr('All modules and scripts were reloaded.')
modules.game_textmessage.displayGameMessage(message)
print(message)
end
function startup()
-- Play startup music (The Silver Tree, by Mattias Westlund)
musicChannel:enqueue(musicFilename, 3)
connect(g_game, { onGameStart = function() musicChannel:stop(3) end })
connect(g_game, { onGameEnd = function()
g_sounds.stopAll()
musicChannel:enqueue(musicFilename, 3)
end })
-- Check for startup errors
local errtitle = nil
local errmsg = nil
if g_graphics.getRenderer():lower():match('gdi generic') then
errtitle = tr('Graphics card driver not detected')
errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.')
end
-- Show entergame
if errmsg or errtitle then
local msgbox = displayErrorBox(errtitle, errmsg)
msgbox.onOk = function() EnterGame.firstShow() end
else
EnterGame.firstShow()
end
end
function init()
-- Configure initial music. -----------------------------------
local listOfMusic = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
}
math.randomseed(os.time())
musicFilename = listOfMusic[math.random(1, #listOfMusic)]
print("Playing now: " .. musicFilename)
for i = 1, 5 do
print(" --- " ..listOfMusic[math.random(1, #listOfMusic)])
end
--------------------- End music config -----------------------
connect(g_app, { onRun = startup,
onExit = exit })
g_window.setMinimumSize({ width = 600, height = 480 })
g_sounds.preload(musicFilename)
-- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then
g_window.setFullscreen(true)
else
-- window size
local size = { width = 800, height = 600 }
size = g_settings.getSize('window-size', size)
g_window.resize(size)
-- window position, default is the screen center
local displaySize = g_window.getDisplaySize()
local defaultPos = { x = (displaySize.width - size.width)/2,
y = (displaySize.height - size.height)/2 }
local pos = g_settings.getPoint('window-pos', defaultPos)
pos.x = math.max(pos.x, 0)
pos.y = math.max(pos.y, 0)
g_window.move(pos)
-- window maximized?
local maximized = g_settings.getBoolean('window-maximized', false)
if maximized then g_window.maximize() end
end
g_window.setTitle(g_app.getName())
g_window.setIcon('/images/clienticon')
-- poll resize events
g_window.poll()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then
g_settings.set('uuid', g_crypt.getMachineUUID())
g_settings.save()
end
end
function terminate()
disconnect(g_app, { onRun = startup,
onExit = exit })
-- save window configs
g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized())
end
function exit()
g_logger.info("Exiting application..")
end
Yeah, the code I posted to you - I tested it further and posted test results there, works fine here. Are you sure you used the math.randomseed(os.time()) function before calling math.random?
There is a thing in output of math.random - is not truly random, there is a pattern which determines which number it will produce and this pattern is always the same if it always uses the same seed.
By using math.randomseed(os.time()), we set a new seed every time the client is run, and this seed will always be an unique number because os.time() is always a unique number (present time never repeats).
Can you take the code from the last post I pasted and run it a few times then copy the outputs from the terminal to make sure they're really not randomizing properly versus just you having weird RNG and getting the same result several times in a row?
local musicPaths = {
"/sounds/startup1",
"/sounds/startup2",
"/sounds/startup3",
"/sounds/startup4",
}
math.randomseed(os.time())
local musicPath = musicPaths[math.random(#musicPaths)] -- First random may be not randomized, but we need to force this to avoid this issue when we need
local musicChannel = g_sounds.getChannel(1)
function setMusic(filename)
musicPath = filename
if not g_game.isOnline() then
musicChannel:stop()
musicChannel:enqueue(musicPath, 3)
end
end
function reloadScripts()
g_textures.clearCache()
g_modules.reloadModules()
local script = '/' .. g_app.getCompactName() .. 'rc.lua'
if g_resources.fileExists(script) then
dofile(script)
end
local message = tr('All modules and scripts were reloaded.')
modules.game_textmessage.displayGameMessage(message)
print(message)
end
function startup()
musicPath = musicPaths[math.random(#musicPaths)]
g_logger.info(string.format("musicPath: %s", musicPath))
-- Play startup music (The Silver Tree, by Mattias Westlund)
musicChannel:enqueue(musicPath, 3)
connect(g_game, { onGameStart = function() musicChannel:stop(3) end })
connect(g_game, { onGameEnd = function()
g_sounds.stopAll()
musicPath = musicPaths[math.random(#musicPaths)] -- Randomizing music again on logout
musicChannel:enqueue(musicPath, 3)
end })
-- Check for startup errors
local errtitle = nil
local errmsg = nil
if g_graphics.getRenderer():lower():match('gdi generic') then
errtitle = tr('Graphics card driver not detected')
errmsg = tr('No graphics card detected, everything will be drawn using the CPU,\nthus the performance will be really bad.\nPlease update your graphics driver to have a better performance.')
end
-- Show entergame
if errmsg or errtitle then
local msgbox = displayErrorBox(errtitle, errmsg)
msgbox.onOk = function() EnterGame.firstShow() end
else
EnterGame.firstShow()
end
end
function init()
connect(g_app, { onRun = startup,
onExit = exit })
g_window.setMinimumSize({ width = 600, height = 480 })
-- preloading musics
for _, path in ipairs(musicPaths) do
g_sounds.preload(path)
end
-- initialize in fullscreen mode on mobile devices
if g_window.getPlatformType() == "X11-EGL" then
g_window.setFullscreen(true)
else
-- window size
local size = { width = 800, height = 600 }
size = g_settings.getSize('window-size', size)
g_window.resize(size)
-- window position, default is the screen center
local displaySize = g_window.getDisplaySize()
local defaultPos = { x = (displaySize.width - size.width)/2,
y = (displaySize.height - size.height)/2 }
local pos = g_settings.getPoint('window-pos', defaultPos)
pos.x = math.max(pos.x, 0)
pos.y = math.max(pos.y, 0)
g_window.move(pos)
-- window maximized?
local maximized = g_settings.getBoolean('window-maximized', false)
if maximized then g_window.maximize() end
end
g_window.setTitle(g_app.getName())
g_window.setIcon('/images/clienticon')
-- poll resize events
g_window.poll()
g_keyboard.bindKeyDown('Ctrl+Shift+R', reloadScripts)
-- generate machine uuid, this is a security measure for storing passwords
if not g_crypt.setMachineUUID(g_settings.get('uuid')) then
g_settings.set('uuid', g_crypt.getMachineUUID())
g_settings.save()
end
end
function terminate()
disconnect(g_app, { onRun = startup,
onExit = exit })
-- save window configs
g_settings.set('window-size', g_window.getUnmaximizedSize())
g_settings.set('window-pos', g_window.getUnmaximizedPos())
g_settings.set('window-maximized', g_window.isMaximized())
end
function exit()
g_logger.info("Exiting application..")
end