Help make Machine Gun damage enemies and not player

I'm working on a 2.5d side scrolling shooter and I have a script on my machine gun to make it aim towards the mouse. Unfortunately if the player is silly he can shoot himself which is bad. How can I make it so the script does not send a damage message to the player but still sends it to the enemies (who have damage receiving scripts). Thank you so much!

var range = 100.0;
var fireRate = 0.05;
var force = 10.0;
var damage = 5.0;
var bulletsPerClip = 40;
var clips = 20;
var reloadTime = 0.5;
private var hitParticles : ParticleEmitter;
var muzzleFlash : Renderer;

private var bulletsLeft : int = 0;
private var nextFireTime = 0.0;
private var m_LastFrameShot = -1;

function Start () {
    hitParticles = GetComponentInChildren(ParticleEmitter);

    // We don't want to emit particles all the time, only when we hit something.
    if (hitParticles)
        hitParticles.emit = false;
    bulletsLeft = bulletsPerClip;

function LateUpdate() {
    if (muzzleFlash) {
        // We shot this frame, enable the muzzle flash
        if (m_LastFrameShot == Time.frameCount) {
            muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360, Vector3.forward);
            muzzleFlash.enabled = true;

            if (audio) {
                if (!audio.isPlaying)
                audio.loop = true;
        } else {
        // We didn't, disable the muzzle flash
            muzzleFlash.enabled = false;
            enabled = false;

            // Play sound
            if (audio)
                audio.loop = false;

function Fire () {
    if (bulletsLeft == 0)

    // If there is more than one bullet between the last and this frame
    // Reset the nextFireTime
    if (Time.time - fireRate > nextFireTime)
        nextFireTime = Time.time - Time.deltaTime;

    // Keep firing until we used up the fire time
    while( nextFireTime < Time.time && bulletsLeft != 0) {
        nextFireTime += fireRate;

function FireOneShot () {
    var direction = transform.TransformDirection(Vector3.forward);
    var hit : RaycastHit;

    // Did we hit anything?
    if (Physics.Raycast (transform.position, direction, hit, range)) { //&&!= "Player"
        // Apply a force to the rigidbody we hit
        if (hit.rigidbody)
            hit.rigidbody.AddForceAtPosition(force * direction, hit.point);

        // Place the particle system for spawing out of place where we hit the surface!
        // And spawn a couple of particles
        if (hitParticles) {
            hitParticles.transform.position = hit.point;
            hitParticles.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);

        // Send a damage message to the hit object
            hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);


    // Register that we shot this frame,
    // so that the LateUpdate function enabled the muzzleflash renderer for one frame
    m_LastFrameShot = Time.frameCount;
    enabled = true;

    // Reload gun in reload Time        
    if (bulletsLeft == 0)

function Reload () {

    // Wait for reload time first - then add more bullets!
    yield WaitForSeconds(reloadTime);

    // We have a clip left reload
    if (clips > 0) {
        bulletsLeft = bulletsPerClip;

function GetBulletsLeft () {
    return bulletsLeft;

function Update () {

var position = Input.mousePosition; 
    newposition = Vector3(position.x,position.y,-camera.main.transform.position.z);
    var lastposition = camera.main.ScreenToWorldPoint(newposition);    transform.LookAt(lastposition);

I've actually just had to tackle a similar issue myself. I'm not sure this is the best way to do it, but it works for me.

Firstly I divide the damage types into an enum:

enum DamageTypes{

On the Projectile I have a variable to store it's damage type, which I send with the hit message.

On the entity with the ApplyDamage function I have an array of damage types to ignore, I can then use that to process whether damage occurs.

function DealDamage(damage : int, damageType : DamageTypes){
    var blocked : boolean = false;
    for(var i : DamageTypes in ignoreDamageTypes){
        if(i == damageType){
            blocked = true;
        hitPoints -= damage;

I hope this helps somewhat towards your solution.

The simple solution is where you do your Physics.Raycast check if hit.transform.tag != "Player" or something like that:

if (Physics.Raycast(transform.position, direction, hit, range)
    && hit.transform.tag != "Player") {

The more complete solution is to prevent them from pointing a gun at themselves probably by putting the player on a different layer and then using an appropriate layer mask in their raycast that does not include objects that they cannot hit (like themselves).