i vaguely remember scripting a system that probably doesnt work but, for the most part, achieved this.
what you want to do is take your model, and add an invisible block. call this the “grip” or “handle”, like you would do with a tool. but; make sure this part is oriented along your model; the front of the grip needs to correspond with the front of, lets say, a gun.
then, using scripts, set the position of the model’s Primary Part (which needs to be the grip) to whatever body part you want it to attach to. for my stupid sheath model, I planned on the grip teleporting to the center of the torso, and so I positioned it on my sheath model so that when it copied the position of the torso identically, the actual model part would end up on the player’s back.
you should use :PivotTo in order to do this, because if you dont, the other parts in your model will just get left behind.
after this, weld the grip to your body part. or use a motor6d. this should be pretty easy.
annd when youre done with that, you should have some rudimentary part sticking from your character! as far as animations go, I think if the rigs are identical- i.e, if you recreate the rig you originally animated on- you should be able to play animations.
i tested it and it does work! as long as the “grip” part works … basically like an attachment, it will connect to the model at that point. just make the grip invisible, and you have whatever you want! in my case, i have a large white block that stands in as a sheath model.
note that this probably wont work if your game allows r15 and r6, as occasionally body parts wont match up, and grip placements will need to differ.
just a tip though, you might want to orient your model ON a human rig, and then attach it, just so it attaches the way you want. this part is really tricky.
overall, you should probably just use the built in attachment system, since this is basically just a recreation of it.
you can even see the transparent part on my characters torso; thats the grip. the rest would be your intended model.