I show this script by BraX on modonline:
	PHP Code:
	
		
damageModel()
{
    bullet = spawn( "script_model", self.origin );
    bullet setModel( "xmodel/tombstone1" );
    bullet.angles = ( 0, 0, 0 );
    bullet setCanDamage(1); // turn damage monitor on
    bullet setContents(1); // bullet will collide with model
    bullet.health = 1000;
    while( bullet.health > 0 )
    {
        // wait for damage...
        bullet waittill("dmg", dmg, who, weap, point, mod);
        bullet.health -= dmg;
        iPrintln("dmg:" + dmg + "; who:" + who.name + "; mod:" + mod);
    }
}
setCanDamage( flag )
{
    if( !isDefined( self.bashradius ) )
        self.bashradius = 32;
    if( !flag )
    {
        self notify("kill_damagemonitor");
        return;
    }
    else
        self thread setCanDamage2();
}
setCanDamage2()
{
    self endon("kill_damagemonitor");
    trace = undefined;
    while( 1 )
    {
        players = getEntArray( "player", "classname" );
        for( i = 0; i < players.size; i++ )
        {
            p = players[i];
            if( !isDefined( p.bash_delay ) )
                p.bash_delay = false;
            forward = vectorscale( anglesToForward(p getPlayerAngles()), 10000 );
            startOrigin = p getEye() + (0,0,20);
            endOrigin = startOrigin + forward;
            trace = bulletTrace( startOrigin, endOrigin, true, p );
            distance = distance ( self.origin, p.origin ) ;
            wait 0.05;
            if( isDefined( trace["entity"] ) && trace["entity"] == self )
            {
                if( p attackButtonPressed() && isWeapon( p getCurrentWeapon() ) && p getWeaponSlotClipAmmo(p getCurrentSlot()) > 0)
                {
                    weap = p getCurrentWeapon();
                    dmg = getDamage( weap );
                    who = p;
                    point = trace["position"];
                    mod = damageMod( weap );
                    self notify("dmg", dmg, who, weap, point, mod);
                }
                if ( p meleeButtonPressed() && !p.bash_delay && distance( p.origin, self.origin ) < self.bashradius )
                {
                    p thread bash_delay( 0.6 );
                    weap = p getCurrentWeapon();
                    dmg = getDamage( weap );
                    who = p;
                    point = trace["position"];
                    mod = "MOD_MELEE";
                    self notify("dmg", dmg, who, weap, point, mod);
                }
            }
        }
        wait 0.05;
    }
}
bash_delay( time )
{
    self endon("disconnected");
    self.bash_delay = true;
    wait time;
    self.bash_delay = false;
}
getDamage(weapon)
{
    switch(weapon)
    {
    case "springfield_mp":
        return 50;
    case "enfield_scope_mp":
        return 50;
    case "mosin_nagant_sniper_mp":
        return 50;
    case "kar98k_sniper_mp":
        return 50;
    case "mosin_nagant_mp":
        return 50;
    case "kar98k_mp":
        return 50;
    case "m1carbine_mp":
        return 38;
    case "m1garand_mp":
        return 38;
    case "enfield_mp":
        return 50;
    case "SVT40_mp":
        return 38;
    case "g43_mp":
        return 38;
    case "bar_mp":
        return 40;
    case "bren_mp":
        return 40;
    case "mp44_mp":
        return 40;
    case "thompson_mp":
        return 35;
    case "sten_mp":
        return 33;
    case "greasegun_mp":
        return 34;
    case "mp40_mp":
        return 36;
    case "ppsh_mp":
        return 30;
    case "PPS42_mp":
        return 40;
    case "shotgun_mp":
        return 40;
    case "panzerschreck_mp":
        return 400;
    case "TT30_mp":
        return 20;
    case "webley_mp":
        return 20;
    case "colt_mp":
        return 20;
    case "luger_mp":
        return 20;
    default:
        return 70;
    }
}
damageMod(weapon)
{
    switch(weapon)
    {
    case "springfield_mp":
    case "enfield_scope_mp":
    case "mosin_nagant_sniper_mp":
    case "kar98k_sniper_mp":
    case "mosin_nagant_mp":
    case "kar98k_mp":
    case "enfield_mp":
        return "MOD_RIFLE_BULLET";
    case "m1carbine_mp":
    case "m1garand_mp":
    case "SVT40_mp":
    case "g43_mp":
    case "bar_mp":
    case "bren_mp":
    case "mp44_mp":
    case "thompson_mp":
    case "sten_mp":
    case "greasegun_mp":
    case "mp40_mp":
    case "ppsh_mp":
    case "PPS42_mp":
    case "shotgun_mp":
        return "MOD_RIFLE_BULLET";
    case "TT30_mp":
    case "webley_mp":
    case "colt_mp":
    case "luger_mp":
        return "MOD_PISTOL_BULLET";
    case "panzerschreck_mp":
    case "panzerfaust_mp":
        return"MOD_PROJECTILE";
    default:
        return "MOD_UNKNOWN";
    }
} 
 But don't work.
It made some errors..