Why don't you create an object rather than a pickup?
/* Where modelHash is your weapon hash
* x,y,z is the ped position
* 1st bool is networkHandle
* 2nd bool is createHandle
* 3rd bool is dynamic
*/
NativeFunction.Natives.CreateObject(modelHash, x, y, z, true, true, true);
or without the natives :
Rage.Object weapon;
Vector3 coords = myPed.Position; // spawn position
string weaponModel = ""; // replace it with the objectname (not in hash)
weapon = new Rage.Object(weaponModel, coords); // as it is an object, it can not be picked up
NativeFunction.Natives.PlaceObjectOnGroundProperly(weapon); // just in case