Try Result := -Damage;
This may work.
This work, but not perfectly.
For damage from flamer and hurts polygons, the function OnPlayerDamage is called only if the Victim have 0 of health.
Put an "WriteConsole(Victim,intToStr(GetPlayerStat(Victim,'health')) ,$000000)" inside of function OnPlayerDamage and see.