CreatePlayerShotA1 isn't the only way to make player shot objects. As a rule of thumb, calling any shot creation function inside a player script will automatically mark that object as a player shot object. This includes CreateShotA1, A2, B1, B2, but also CreateLooseLaserA1, StraightLaserA1 and CurveLaserA1.
However, in order for them to do anything, you need to assign damage to them. Save the object ID in a variable and then use ObjShot_SetDamage and (if necessary, ObjShot_SetPenetration) on your object like so:
let obj = CreateLooseLaserA1(params);
ObjShot_SetDamage(obj, dmg);
ObjShot_SetPenetration(obj, pen);
I believe lasers have infinite penetration by default, but don't take my word for it. Experiment yourself. I hope I could be of use to you. :)