I think I've found a good way for nade throwing

NOTE: PHP tags because code tags are currently broken..
Code:
// get a rough idea of how high it can be thrown
vecMidPoint = vecSpot1 + (vecSpot2 - vecSpot1) * 0.5;
TRACE_HULL (vecMidPoint, vecMidPoint + Vector (0, 0, 500), ignore_monsters, head_hull, pEdict, &tr);
if (tr.flFraction != 1.0)
{
vecMidPoint = vecMidPoint + (tr.vecEndPos - vecMidPoint) * 0.75;
}