Probably the Problem is the usage of the MD2 Format, not sure of that. You have no access to the Vertices of a MD2, so maybe the linepicking is limited as well. Try it in a small, controllable test code, just load the MD2. point the camera to it, and use Camerapick, then position a tiny cube at pickedx(),pickedy(),pickedz() and check if the cube is now on the surface of the MD2.
If it seems to be impossible to pick the MD2s surface accurately, you ma try to convert it to B3D. Maybe UltimateUnwrap3D can convert it, but I am not sure.
Additionaly I have to say, you Hit Function only checks if XYZ is equal the Zombies position. But you should rather check if the Value that is returned by the camerapick fits the Entity Handle of the zombie:
For Zombie.Zombies = Each Zombies
If Shot = Zombie\Ent
...
Of course EntityPickMode of Zombie\Ent must be Polygonal. I don't see any definition of Pic_Zombie - it should be 2.
If it seems to be impossible to pick the MD2s surface accurately, you ma try to convert it to B3D. Maybe UltimateUnwrap3D can convert it, but I am not sure.
Additionaly I have to say, you Hit Function only checks if XYZ is equal the Zombies position. But you should rather check if the Value that is returned by the camerapick fits the Entity Handle of the zombie:
For Zombie.Zombies = Each Zombies
If Shot = Zombie\Ent
...
Of course EntityPickMode of Zombie\Ent must be Polygonal. I don't see any definition of Pic_Zombie - it should be 2.