In your collision code, you have:
intersectObjectDBC(0,0,object position x(zombie),object position y(zombie),object position z(zombie),object position x(10000),object position y(10000),object position z(10000),0)
bang=collide
print collide
Collide is the return value inside the function. You need to set bang=to the function:
bang=intersectObjectDBC(0,0,object position x(zombie),object position y(zombie),object position z(zombie),object position x(10000),object position y(10000),object position z(10000),0)
Try that out - see if it makes a difference.
Also, if you are detecting collision with each individual zombie, you don't necessarily need the feeler object - but it can help to get the resulting position of the ray.
I made a demo NOT using Sparky's DLL and just using the feeler object. I use a 15x15 matrix, 300 green pillars (boxes) as obstacles, and a total of 200 zombies. The 300 green pillars are actually all one object. I set it to polygon collision and I set the feeler to box collision. The player is the other object that has collision as well. As a result, only three objects are set to collision. For each zombie I use set object collision off.
at setting the sync rate to 0, I get a pretty steady FPS of between 125 and 135. I hide all off screen zombies, and make them respawn at their original locations - and don't update their positions or test the feeler until they are in screen.
Using a similar method with sparky's, I get anywhere from 138 to 220 fps. I originally was going to attach an executable of the Native DBC collision method with a feeler object, but I'm gettings HTTP errors from the TGC server. Oh well.
Enjoy your day.