You can get Heart Scales earlier than Victory Road, in fact its right outside it! If you have the Good Rod, which you can get on Route 118(Mauville Side), get a Pokemon with Thief or Covet, like Linoone, who can learn both, and go to Route 128, where you can catch Luvdisc with the good rod. Also, if you want to increase your chance of fishing up a poke, get a Pokemon with suction cups and have it be fainted and at the front of your party. Then have linoone be 2nd. When you fish up a Pokemon, linoone will come out, and therefore use thief/covet on the luvdisc to get heart scales.
Hopefully this answers your question
Hope I helped!(ish)