What do your debug messages say about the Jukebox script?
If you play music when a guy types "!music on" you're getting timing errors with when the script starts playing music. What you can do is play something short and repetitive with "!music on" and have the script execute the "no music" command before playing new music.
Add some debug messages to Timer_Expired() and you'll see what the correct order is, that order should be fine though.
int LuaScriptManager::Lua_Start_Timer_Wrap(lua_State *L)
{
int argc = lua_gettop(L);
if(argc < 4)
{
return 0;
}
int scriptID = (int)lua_tonumber(L, 1);
int obj = (int)lua_tonumber(L, 2);
float Time = (float)lua_tonumber(L, 3);
int Number = (int)lua_tonumber(L, 4);
LuaScriptManager::Lua_Start_Timer(Commands->Find_Object(obj), scriptID, Time, Number);
return 0;
}