Well Monster_TakeDamage() is missing a parameter, the "inflictor" argument.
Shouldn't affect you, but try putting 0 instead of idattacker to be sure you can see any message appearing.
I assume monsters *are* a func_wall ?
You might aswell take out all the checks anyway, and dump all the input.
Something like:
Code:
public Monster_TakeDamage( this , idmonster , idinflictor, idattacker , Float:damage , damagebits )
{
new model[64] ;
pev(idmonster,pev_model,model,63) ;
client_print(0,print_chat,"Damage to ent %i (model: %s)",idmonster,model)
client_print(0,print_chat,"user: %i (inflictor: %i)",idattacker,idinflictor)
client_print(0,print_chat,"damage: %d (bits: %i)",damage,damagebits)
}