MOB HP - Subtract on Hit if Near

I have two scripts… Player Attack and AttackandHP (Placed on Enemies)
Now the AttackandHP shows my enemies health and also attacks the player. Ive got the Mobs to take my life away fine, how ever, i want to have it so my mobs could either be selected on click, or so you can press F and any mobs near you will lose HP. Im stuck and the Player Attack script does not effect my mobs at all because they require a target but im lost. Any help please!

AttackandHP
using UnityEngine;
using System.Collections;

public class AttackandHP : MonoBehaviour {
	public int maxHealth = 10;
	public int curHealth = 10;

	public GameObject target;
	public float attackTimer;
	public float coolDown;
	public GUIStyle HPBar; //GUISTYLE FOR BUTTONS ETC

		public float healthBarLength;


	// Use this for initialization
	void Start () {

	healthBarLength = Screen.width / 2;
	
	attackTimer = 0;
	coolDown = 2.0f;
	}
	
	// Update is called once per frame
	void Update () {

		//TEST


		//TESTEDN
	AdjustCurrentHealth(0);
	
	if(attackTimer > 0)
			attackTimer -= Time.deltaTime;
			
		if(attackTimer < 0)
			attackTimer = 0;
			
		if(attackTimer == 0) {
			Attack();
			attackTimer = coolDown;
			}
		
	}
	
	void OnGUI() {
	float distance = Vector3.Distance(target.transform.position, transform.position);

		Debug.Log(distance);
		
		if(distance < 4) {
	GUI.Box(new Rect(10, 40, healthBarLength, 20), curHealth + "/" + maxHealth, HPBar);
}
	}
	
	public void AdjustCurrentHealth(int odj) {
	curHealth += odj;
	
	if(curHealth < 1)
		curHealth = 0;
		
	if(curHealth > maxHealth)
		curHealth = maxHealth;
		
	if(maxHealth < 1)
		maxHealth = 1;
	
	if(curHealth == 0)
		Destroy (gameObject);
		
	healthBarLength = (Screen.width / 2 ) * (curHealth / (float)maxHealth);
	}
	
	private void Attack() {
		float distance = Vector3.Distance(target.transform.position, transform.position);
		
		Vector3 dir = (target.transform.position - transform.position).normalized;
		
		float direction = Vector3.Dot(dir, transform.forward);

		Debug.Log(direction);
		
		if(distance < 2) {
			if(direction > 0) {
		PlayerHealth eh = (PlayerHealth)target.GetComponent("PlayerHealth");
		eh.AdjustCurrentHealth(-8);
		
		}
		}
	}
}

Player Attack
using UnityEngine;
using System.Collections;

public class PlayerAttack : MonoBehaviour {
	public GameObject target;
	public float attackTimer;
	public float coolDown;
	
	// Use this for initialization
	void Start () {
		attackTimer = 0;
		coolDown = 2.0f;
	}
	
	// Update is called once per frame
	void Update () {

		if(attackTimer > 0)
			attackTimer -= Time.deltaTime;
			
		if(attackTimer < 0)
			attackTimer = 0;
			
	//attack press F key
		if (Input.GetKey (KeyCode.F)) {
		if(attackTimer == 0) {
				animation.Play("bitchslap");
			Attack();
			attackTimer = coolDown;
			}
		}
	
		

	}


	// CHANGE TO HIT NEAREST ENEMY?? IDK HOW MAN!!!
	private void Attack() {

		AttackandHP eh = (AttackandHP)target.GetComponent("AttackandHP");
		eh.AdjustCurrentHealth(-2);


	}
}

Check my previous answer out for a discussion how to get the k’th closest object tagged “Enemy”. Useful if you want for example “to target the three closest enemies”.

If you are trying to describe an area of effect attack, ensure your mobs have colliders and then just do a Physics.OverlapSphere (link contains example applying damage to everything within radius).

To allow an object to be selected on click, consider implementing the OnMouseDown event handler. Put very simply, you could use a private static variable (or Ambient Context) for storing the currently selected object.