RegisterCVars function doesn't need to be public
g_szWeaponClassnames shouldn't be global, declare it in RegisterCVars function so memory is free when you exit the function.
i < MAX_WEAPON + 1
i <= MAX_WEAPON would make more sense
Little tip :
formatex( szCVarName, charsmax( szCVarName ), "max_distance_%s", g_szWeaponClassnames[ i ] );
replace( szCVarName, charsmax( szCVarName ), "weapon_", "" );
formatex( szCVarName, charsmax( szCVarName ), "max_distance_%s", g_szWeaponClassnames[ i ][ 7 ] );
static Float:flAttackerOrigin[ 3 ];
static Float:flVictimOrigin[ 3 ];
Static is not needed at all there.
if( !g_pWeaponCVARs[ iWeapon ] ) return
new iMaxDistance = get_pcvar_num( g_pWeaponCVARs[ iWeapon ] );
You read 2 times the same array, would be better to cache pointer result.
DMG_HEGRENADE check is useless, it will never happen.
Your plugin only allow to lower default weapon distance, and not to raise it.
With orpheu you could lower or raise this distance, and you could also change bullets penetration (number of times a bullet can go thru a wall).
So your way is very limitated.