Similar scripts but error on one and not the other

I have a script with two functions in, then i have two other scripts, where i am trying to access these two functions in. The first script Works fine and it is calling the function, but in the other script i have called the function in the same way as the first one, but i get the error " Invalid field type ‘void’ " why?

Here is the script with the functions in.

//EScript.js
                
                static function AddL() {
                if (lives < maxLives)
                {
                    lives++;
                    PlayerPrefs.SetInt("lives", lives);
                }
            }         
        
            static function SubL(){
                if(lives <= 0)
                    return false;
                if (lives == maxLives)
                {
                    nextLife = UnixTimestamp() + RegenInterval;
                }
                PlayerPrefs.SetInt("nextLife", nextLife);
                lives--;
                PlayerPrefs.SetInt("lives", lives);
                return true;
            }

Here is the first “access script” this one works.

var subfunct = EScript.SubL();
        
        function OnGUI() {
        		
        		
        		if (GUI.Button(Rect(100,100,120,40),"Level 1")){
        				EScript.SubL();
        				Application.LoadLevel("leveltimetestscerne");	
        			}		
        }

And here is the second “access” script this one doesn’t work.

 var addfunct = EScript.AddL();   // this is the line where the error is
    
    function OnTriggerEnter(other : Collider) {
     
        if (other.gameObject.tag == "Player") 
        {  
        	EScript.AddL();	
         } 
    }

SubL returns a value, but AddL does not. EScript.AddL() executes the function, but nothing is returned, that is why you can’t assign the return value to addfunct.

I imagine one of two things is happening. Either you forgot to put return values into AddL(), or you are trying to use addfunct as a delegate.

A: If you forgot to put the return statements in:

// perhaps you wanted something like this?
static function AddL() {
    if (lives < maxLives)
    {
        lives++;
        PlayerPrefs.SetInt("lives", lives);
        return true; // success
    }
    return false; // failure
}   

B: If you wanted to use delegates:

Your syntax would be incorrect. You should remove the brackets in your delegate assignment var addfunct = EScript.AddL, and then use the delegate with the delegate variable name addfunct().

Second script using a delegate:

var addfunct = EScript.AddL;

function OnTriggerEnter(other : Collider) 
{
    if (other.gameObject.tag == "Player") 
    {  
        addfunct();    
    } 
}