Looking at the online help and the code, it looks like "take" specifies how the object is taken (whether it can be, does it have a script to do the taking or is it just a boolean, which means the default take action happens), whereas "ontake" is a script that is invoked (if it exists) *after* an object is taken.
I'm not really sure what you had done, but I suspect that somehow you ended up with your "take" code broken, either by putting in your own script somehow - which means the default "take" action would not... uh... take place - or something else twisted which I can't even imagine.

I would not think adding an "ontake" on its own would do much to hamper taking, as it fires off after the taking has already taken place.
Take that for what you will.