The most durable paint will be catalyzed epoxy or polyester.
They are industrial two part paints that cure on their own.
Duracoat is the most well known in the gun industry, but you can buy equivalent paints at specialty paint shops...but you have to buy them by the gallon at those shops.
Duracoat comes as small as 4oz. It must be applied with an air brush.
I've used krylon with good success.
Putting a clear matte finish over krylon helps the durability.
If you're painting plastic then you need an undercoat of Krylon Fusion because it bonds a whole lot better to plastic than regular krylon.
The biggest part about painting guns is surface prep.
You have to make sure everything is very clean and surfaces are roughed up at least a little bit.
Take everything apart, figure out which parts you want painted, roughen up if needed, clean, clean again, mask off what you don't want painted, then paint it.
If you want camo then paint the gun one color, cut out masking tape and place it randomly over the gun, paint with a different color, put on more masking tape, then paint it another color.
Look up Lauer Weaponry or Duracoat and you'll see what I'm talking about with the masking tape.
Here's a shotgun I did with krylon ultra flat, a hobby knife, masking tape, and a whole heck of a lot of time.
-I painted it with black Krylon Fusion, let dry
-put on masking tape on the spots that are still black. all masking tape is left on until the end.
-painted whole gun green, let dry
-put masking tape on everything that's green
-painted whole gun khaki, let dry
-pull off masking tape