This is quite easy to do with scripting. First, you need the sound effects, I suppose you already have them.
In OnEnter
AddTimer("tmrChainRattle", 0.1f, "ChainRattle");
Then this function
void ChainRattle(string &in asTimer)
{
if (GetPlayerSpeed() > 0.0f)
{
PlaySoundAtEntity(SOUNDNAME, SOUNDFILE, 'Player', 0.0f, false);
AddTimer('tmrChainRattle', GetPlayerSpeed(), 'ChainRattle');
}
else
{
AddTimer('tmrChainRattle', 0.1f, 'ChainRattle');
}
}
What this does is continually check whether the player is moving, if the player is moving, then play the chain rattle sound, and set a timer off that will continue to play the sound in-sync with the stepping sounds.
NOTE: It may be out of sync right now, you will have to mess with the timings. Also, for the different states of walking or running, you can do a if block to target specific player speeds. Use debug messages to see how fast the player moves