making 3 scripts one?

Hi i have a script that i use to move and shoot and do other things with and my game is same pc 3 player and currently i have 3 of the same script but just changed the inputs name s and variable names is their way i could combine these into one script so that i dont
have have to change each one every time
here is an example of the script

using UnityEngine;
using System.Collections;

public class TankMovement2 : MonoBehaviour {
	
	//Movement
	public int speed;
	public int Turnspeed;
	
	//Deafult gun
	public Rigidbody Projectile = null;
	public Transform Launcher = null;
	public float ProjectileSpeed;
	public int Clip = 0;
	public bool DefaultGun;
	//MacchineGunShot
	public bool MachineGun;
	public Rigidbody MachineGunBullet = null;
	public float MachineGunSpeed;
	public int MClip = 0;
	public Transform MBulletpos = null;
	public float rateOfFire;
	private float rateOfFireTimer = 0.0f;
	public GameObject MText;
	public Transform MTextLoc;


	public bool mine;
	public GameObject Mineg;
	public Transform MineLoc;
	public GameObject MineText;

	public bool flame;
	public GameObject Flamesgo;
	public Transform flameloc;
	public GameObject FlameText;
	//Sounds and paricles
	public GameObject Particle;
	public GameObject Explode;
	public AudioClip Bomb;
	public AudioClip ExplodeSound;
	public AudioClip Shotgun;
	public AudioClip Pistol;
	
	// Use this for initialization
	void Start () 
	{
		DefaultGun = true;
		MachineGun = false;
		Time.timeScale = 1F;
		cInput.SetKey("RedTank Forward", "UpArrow");
		cInput.SetKey("RedTank Reverse", "DownArrow");
		cInput.SetKey("RedTank Turn Left", "LeftArrow");
		cInput.SetKey("RedTank Turn Right", "RightArrow");
		cInput.SetKey("RedTank Shoot", "Return");
	}
	void Update()
	{
		rateOfFireTimer += Time.deltaTime;
	}
	// Update is called once per frame
	void FixedUpdate () 
	{
		//Movement
		//foward
	    if (cInput.GetKey("RedTank Forward"))
		{
			transform.localPosition += transform.forward * speed * Time.deltaTime;
		}
		//Backwards
		 if (cInput.GetKey("RedTank Reverse"))
		{
			transform.localPosition += -transform.forward  * speed * Time.deltaTime;
		}
		//Rotate Left
		 if (cInput.GetKey("RedTank Turn Left"))
		{
			transform.Rotate(0, -Turnspeed, 0, Space.Self);
		}
		//Rotate Right
		 if (cInput.GetKey("RedTank Turn Right"))
		{
			transform.Rotate(0, Turnspeed, 0, Space.Self);
		}
		
		//Shooting
		if (Clip == 5)
		{
			DefaultGun = false;
		}
		if (Clip > 5)
		{
			Clip = 5;
		}
		if (MClip == 10)
		{
			MachineGun = false;
			Clip = Clip;
			MClip = 0;
			DefaultGun = true;
		}
		if (MClip > 10)
		{
			MClip = 10;
		}
		
		 if (cInput.GetKeyDown("RedTank Shoot"))
		{
			if (DefaultGun == true)
			{
				Clip = Clip +1 ;
				audio.PlayOneShot(Bomb);
				GameObject part = Instantiate(Particle, Launcher.position, Launcher.rotation)as GameObject;
				Rigidbody shot = Instantiate(Projectile, Launcher.position, Launcher.rotation) as Rigidbody;
				shot.AddForce(Launcher.forward * ProjectileSpeed);
				Destroy (part, 1);
			}
			
		}
		if (cInput.GetKey("RedTank Shoot")&& rateOfFireTimer >= (1/rateOfFire))
		{
			FireMachineGun();
			
		}

		if (cInput.GetKeyDown("RedTank Shoot"))
		{
			DropMine();
		}
		if (cInput.GetKeyDown("RedTank Shoot"))
		{
			FlameOn();
		}
		if (cInput.GetKeyUp("RedTank Shoot"))
		{
			FlameOff();
		}
	}
	void FlameOn()
	{
		if (flame == true)
		{
			Flamesgo.SetActive(true);
		}
	}
	void FlameOff()
	{
		if (flame == true)
		{
			Flamesgo.SetActive(false);
		}
	}
	void FireMachineGun()
	{
		if (MachineGun == true)
		{
			Rigidbody shot = Instantiate(MachineGunBullet,MBulletpos.position, MBulletpos.rotation) as Rigidbody;
			shot.AddForce(Launcher.forward * MachineGunSpeed);
			audio.PlayOneShot(Pistol);
			MClip = MClip +1 ;
			rateOfFireTimer = 0.0f;
		}
	}
		
	void DropMine()
	{
		if (mine == true)
		{
			GameObject mines = Instantiate(Mineg,MineLoc.position, MineLoc.rotation) as GameObject;
			mine = false;
			DefaultGun = true;
			//audio.PlayOneShot();
		}
	}
	void OnTriggerStay(Collision col) 
	{
		if (col.gameObject.tag == "Tank")
		{
			GameObject part = Instantiate(Explode, transform.position, transform.rotation)as GameObject;
			gameObject.SetActive(false);
			Destroy (part, 2);
			Destroy (gameObject);
		}
	}
	void OnCollisionEnter(Collision col) 
	{
		if (col.gameObject.tag == "Mine")
		{	
			GameObject part = Instantiate(Explode, transform.position, transform.rotation)as GameObject;
			AudioSource.PlayClipAtPoint(ExplodeSound,transform.position);
			Destroy (part, 2);
			gameObject.SetActive(false);
		}
		if (col.gameObject.tag == "MinePickup")
		{
			audio.PlayOneShot(Shotgun);
			GameObject part = Instantiate(MineText, new Vector3(-8, 0, 0),Quaternion.Euler(90, 0, 0))as GameObject;
			DefaultGun = false;
			mine = true;
			DefaultGun = false;
			col.gameObject.SetActive(false);
		}
		if (col.gameObject.tag == "FlamePickUp")
		{
			audio.PlayOneShot(Shotgun);
			//GameObject part = Instantiate(MineText, new Vector3(-8, 0, 0),Quaternion.Euler(90, 0, 0))as GameObject;
			DefaultGun = false;
			flame = true;
			col.gameObject.SetActive(false);
		}
		if (col.gameObject.tag == "Projectile")
		{	
			GameObject part = Instantiate(Explode, transform.position, transform.rotation)as GameObject;
			AudioSource.PlayClipAtPoint(ExplodeSound,transform.position);
			Destroy (part, 2);
			gameObject.SetActive(false);
		}
		if (col.gameObject.tag == "Tank")
		{
			GameObject part = Instantiate(Explode, transform.position, transform.rotation)as GameObject;
			gameObject.SetActive(false);
			Destroy (part, 2);
		}
		if (col.gameObject.tag == "Ammo")
		{
			audio.PlayOneShot(Shotgun);
			Clip = 0;
			DefaultGun = true;
			col.gameObject.SetActive(false);
		}
		if (col.gameObject.tag == "MachineGun")
		{
			audio.PlayOneShot(Shotgun);
			GameObject part = Instantiate(MText, new Vector3(-8, 0, 0),Quaternion.Euler(90, 0, 0))as GameObject;
			DefaultGun = false;
			MachineGun = true;
			col.gameObject.SetActive(false);
		}
		if (col.gameObject.tag == "Time")
		{
			col.gameObject.SetActive(false);
			Time.timeScale = 0.3F;
		}
	}

}

The idea of a class is that it is a 'class’ification. As such, you are not supposed to create lots of different classes that have the same behaviour. Define a few more public variables, then set them from outside as part of a setup process

Example:

//Tank Movement script
public string tankName;
public string shoot;

Then from another script, get a tank GameObject with the Script attached and set it up

//Obtain the object
TankMovement tm = GetComponents<TankMovement>()
//Set up
tm.tankName = "Red Tank";
tm.shoot = "Red Shoot";

Back in your Tank Movement script
You would then use these values for example

//if (cInput.GetKeyDown("RedTank Shoot"))
if (cInput.GetKeyDown(shoot))

Note: In the true object oriented spirit of things, you should really keep variables private and setup up via class functions (methods), constructors, properties etc. as appropriate, to use ‘encapsulation’. But the above while not being long term good practice, should be enough to resolve your current problem. Note for different tanks, you would simply set the variables up with different values