Fire type moves or Fighting moves are the way to go
Use a good water-ground type pokemon like quagsire that know some ground move like earthquake is most prefered and you can beat him easily.
Use water type pokemon against his pokemon, for magneton use a rock/ground like graveler or onix or geodude. Just keep on using revives and potions on you pokemon when they have fainted or have low health.
Make sure that you have a decent level fire type pokemon maybe infernape or magmar this will defeat magneton then use a water type pokemon for bastiodon like a gyarados or somethin then for steelix use water or fire hope this helped
Go to Iron island and get the egg from Riley and it will hatch into a Riolu. Train it to level 48 and it will bash thru all your opponents pokemon. It will evolve at lv 30. Lucario will learn these moves. Basic: Dark pulse,quick attack,foresight,Detect and metal claw. Lv 6 counter,lv 11 force palm,lv15 feint,lv 19 bone rush, lv 24 metal sound,lv 29 me first,lv 33 swords dance,lv 37 aura sphere,lv 47 dragon pulse and lastly lv 51 extreme speed. Hoped this helped!
Get a in a infernape and train it to level 94 and you will beat him.