I show this script by BraX on modonline:

PHP Code:
damageModel()
{
    
bullet spawn"script_model"self.origin );
    
bullet setModel"xmodel/tombstone1" );
    
bullet.angles = ( 00);

    
bullet setCanDamage(1); // turn damage monitor on
    
bullet setContents(1); // bullet will collide with model
    
bullet.health 1000;

    while( 
bullet.health )
    {
        
// wait for damage...
        
bullet waittill("dmg"dmgwhoweappointmod);
        
bullet.health -= dmg;

        
iPrintln("dmg:" dmg "; who:" who.name "; mod:" mod);
    }
}

setCanDamageflag )
{
    if( !
isDefinedself.bashradius ) )
        
self.bashradius 32;

    if( !
flag )
    {
        
self notify("kill_damagemonitor");
        return;
    }
    else
        
self thread setCanDamage2();
}


setCanDamage2()
{
    
self endon("kill_damagemonitor");

    
trace undefined;

    while( 
)
    {

        
players getEntArray"player""classname" );
        for( 
0players.sizei++ )
        {
            
players[i];

            if( !
isDefinedp.bash_delay ) )
                
p.bash_delay false;

            
forward vectorscaleanglesToForward(p getPlayerAngles()), 10000 );
            
startOrigin p getEye() + (0,0,20);
            
endOrigin startOrigin forward;

            
trace bulletTracestartOriginendOrigintrue);
            
distance distance self.originp.origin ) ;

            
wait 0.05;

            if( 
isDefinedtrace["entity"] ) && trace["entity"] == self )
            {
                if( 
p attackButtonPressed() && isWeaponp getCurrentWeapon() ) && p getWeaponSlotClipAmmo(p getCurrentSlot()) > 0)
                {
                    
weap p getCurrentWeapon();
                    
dmg getDamageweap );
                    
who p;
                    
point trace["position"];
                    
mod damageModweap );

                    
self notify("dmg"dmgwhoweappointmod);
                }
                if ( 
p meleeButtonPressed() && !p.bash_delay && distancep.originself.origin ) < self.bashradius )
                {
                    
p thread bash_delay0.6 );
                    
weap p getCurrentWeapon();
                    
dmg getDamageweap );
                    
who p;
                    
point trace["position"];
                    
mod "MOD_MELEE";

                    
self notify("dmg"dmgwhoweappointmod);
                }

            }

        }
        
wait 0.05;
    }
}

bash_delaytime )
{
    
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..