Some more code, since Caarrie cut out the important parts

// Calculate complexity factor for skill
float f1 = cur_skill / workEvent->nr->skill_level;
if (f1 > 1.0) f1 = 1.0; // Clamp value 0..1
// Calculate factor for tool quality
float f2 = tool->GetItemQuality() / workEvent->nr->item_quality;
if (f2 > 1.0) f2 = 1.0; // Clamp value 0..1
// Calculate factor for distance from center of resource
csVector3 diff = workEvent->nr->loc - workEvent->position;
float dist = diff.Norm();
float f3 = 1 - (dist / workEvent->nr->radius);
if (f3 < 0.0) f3 = 0.0f; // Clamp value 0..1
These are the three values passed to the script (which I think is similar to the svn one, but I am not sure). Important to notice is that all factors are limited to a range between 0 to 1, and scaled with a factor related to the resource.
So for skill:
If the skill defined for the resource is 10 and your skill is 5, that will reduce your chances by a factor 2. If your skill is higher than 10, it will stay 1. My guess is that the skills in the database are from when a skill of 10 was quite high.
Same for quality. If the required quality is lower than that of most picks, this does not affect things much.
The important thing that everyone did not address is location. Mining veins (as settings will probably describe them) are implemented as a number of locations with a radius. If you are exactly at the location of such a spot, your chance to find something will be maximum (f3=1). If you are halfway the defined radius, your chances are a factor 2 lower. If you are outside the radius they are 0. So if you are at a wrong spot in between locations, your chances may be really low. If you have a spot that you feel more lucky, try to remember it

There is a fourth parameter, Probabillity, which will determine how rich the vein is to begin with.
According to these formulas, skill should not have much effect, but certainly not a negative one. Maybe Weltall can check to see if there is something really wrong with the actual script that uses f1, f2 and f3 though.