Problem with this script ?????

Hello in my game i have a third player and a gun that turn and start shoot the player when he is near. i have this script that work fine for me. detect the player and turn when the player is stand. but my porblem that i would like to make the the gun start shoot after 2 or 3 second after he turn to the player. because my gun for the moment is shooting all the time. i tried with this script but it's not working.

var target : Transform;
var range = 10.0;
var Flame : GameObject;
var mode = "idle";
var gunSpeed = 0.05;

function Awake()
{
       target = GameObject.FindWithTag("Guide Player").transform;
        Flame.renderer.enabled = false;
}

function Update () 
{
    if(target && CanAttackTarget())
   {
        //transform.LookAt(target);
        var targetRotation = Quaternion.LookRotation(target.position - transform.position, Vector3.up);
        transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 1.6);
    }
}

function CanAttackTarget()
{
     //Check if the target is close enough
     if(Vector3.Distance(transform.position, target.position)>range)
    {
    Disengage();
    return false;
    }   
    return true;

var hit : RaycastHit;

    //Check if there's collision inbetween turret & target
    if(Physics.Linecast(transform.position, target.position, hit))
    {
        if(hit.collider.gameObject.tag != "Guide Player")
        {
            Disengage();
            return false;
        }
        else
        {
            Attack();
            return true;
        }
    }
    return true;
}

function Attack()
{
    if(mode != "attack")
    {
        InvokeRepeating("Flame", 2, gunSpeed );
        mode = "attack";
    }
}

function Disengage()
{
    if(mode != "idle")
    {
        CancelInvoke();
        mode = "idle";
        Flame.renderer.enabled = false;

    }
}

the Flame var is where i put my particle effect. can i have help for this problem. thanks

Try adding this function to your script

function Flame ()
{
    if(Flame)
    {
        if(Flame.renderer.enabled)
        {
            Flame.renderer.enabled = false;
        }
        else
        {
            Flame.renderer.enabled = true;
        }
    }
}

This is the part which is affecting your 2 second shoot delay:

//Repeate function "Flame", delay 2 seconds after found player, repeat speed
InvokeRepeating("Flame", 2, gunSpeed );

But you have no function "Flame" which could be called

Edit1

In your CanAttackTarget function you've written "return true;" after Disengage() and return false. Delete that. Otherwise, here is my full script which is working fine, copy this and you only need to set your gameObjects in the inspector again.

var target : Transform;
var range = 10.0;
var Flame : GameObject;
static var mode = "idle";
var gunSpeed = 0.05;

function Awake ()
{
    if(!target)
    {
        target = GameObject.FindWithTag("Guide Player").transform;
        Flame.renderer.enabled = false;
    }
}

function Update () 
{
    if(target && CanAttackTarget() )
    {
            // transform.LookAt(target);
        var targetRotation = Quaternion.LookRotation(target.position - transform.position, Vector3.up);
        transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * 1.6);
    }
}

function CanAttackTarget ()
{
    //Check if target is close enough
    if(Vector3.Distance(transform.position, target.position) > range )
    {
        Disengage ();
        return false;
    }

    var hit : RaycastHit;

    //check if theres collision turret - target
    if(Physics.Linecast(transform.position, target.position, hit) )
    {
        if(hit.collider.gameObject.tag != "Guide Player")
        {
            Disengage ();
            return false;
        }
        else
        {
            Attack ();
            return true;
        }
    }

    return true;
}

function Attack ()
{
    if(mode != "attack")
    {
    InvokeRepeating("FalconAnimate",  2, gunSpeed );
    mode = "attack";
    }
}

function Disengage ()
{
    if(mode != "idle")
    {
        CancelInvoke();
        mode = "idle";
        Flame.renderer.enabled = false;
    }
}

function FalconAnimate ()
{
    if(Flame)
    {
        if(Flame.renderer.enabled)
        {
            Flame.renderer.enabled = false;
        }
        else
        {
            Flame.renderer.enabled = true;
        }
    }
    else
    {
        print("Effects Turret not set");
    }
}

I don't know why this script don't work

i change this line

InvokeRepeating("Flame1", 2, gunSpeed );

and i add this part at the end

function Flame1 ()

{ if(Flame) { if(Flame.renderer.enabled) { Flame.renderer.enabled = true; } else { Flame.renderer.enabled = true; } } }

but they still not working. (( i change Flame to Flame 1 because flame is already exist ))

can we find a solution. ?? thanks