BCE0044: expecting EOF, found '}'.

i’m very new to unity and so far, there have been a lot of problems that i was able to fix, but this one is getting on my nerves, i found a gun script on the internet, and saw what it was capable of, but there were 3 errors, i fixed 2, but 1 error is still there, and i don’t know whats wrong, can someone please help me

Here is the Script, i think is has around 500 lines, i know it will be annoying to fix it, but if you can, that would be great, by the way, this is Mooncrawler456’s script

#pragma strict
#pragma implicit
#pragma downcast

@System.Serializable

public class WeaponScript extends MonoBehaviour {
	//Booleans
	@HideInInspector
	var aimed : boolean;
	@HideInInspector
	var fire : boolean;
	@HideInInspector
	var canAim : boolean;
	@HideInInspector
	var isReload : boolean;
	@HideInInspector
	var noBullets : boolean;
	@HideInInspector
	var Recoil : boolean;
	@HideInInspector
	var canFire : boolean;
	@HideInInspector
	var singleFire : boolean;
	
	private var motor : FPScontroller;
	private var player : GameObject;
	private var controller : CharacterController;
	private var mouseLook : FPSMouseLook;
	
	//make walk sway amount smaller when player is aim 
	//or aim mode walk sway control
	private var walkSway : WalkSway;
	private var defaultBobbingAmount : float;
	private var managerObject : GameObject;
	
	enum gunType {MACHINE_GUN, GRENADE_LAUNCHER, SHOTGUN, KNIFE}
	var GunType : gunType;
	var FlashLight : boolean;
	
	//Use classes to make a group of variables
	
	var weaponName : String = "";
	
	//Aim variables
	class AimVariables {
		var aimPosition : Vector3 = Vector3.zero;
		var smoothTime : float = 5;
		var toFov : float = 45;
		var aimBobbingAmount : float;
		var playAnimation : boolean;
	}
	var Aim : AimVariables;
	private var defaultFov : float;
	private var defaultPosition : Vector3;
	private var currentFov : float;
	private var currentPosition : Vector3;
	
	var firePoint : Transform;
	
	//Shotgun variables
	class shotGun{
		var bullet : Transform;
		var fractions : int = 5;
		var errorAngle : float = 3;
		var fireRate : float = 1;
		var reloadTime : float = 2;
		var fireSound : AudioClip;
		var reloadSound : AudioClip;
		var bulletsPerClip : int = 40;
		var bulletsLeft : int;
		var clips : int = 15;
		var smoke : ParticleEmitter;
	}
	var ShotGun : shotGun;
	
	//Grenade launcher variables
	class GrenadeLauncher{
		var projectile : Rigidbody;
		var fireSound : AudioClip;
		var reloadSound : AudioClip;
		var initialSpeed = 20.0;
		//Delay shot (ex. greande throw)
		var shotDelay : float = 0;
		var waitBeforeReload = 0.5;
		var reloadTime = 0.5;
		var ammoCount = 20;
	}
	var grenadeLauncher : GrenadeLauncher;
	
	private var lastShot = -10.0;
	
	//Machine gun variables
	class MachineGun{
		var bullet : Transform;
		var muzzleFlash : GameObject;
		var fireSound : AudioClip;
		var reloadSound : AudioClip;
		var pointLight : Light;
		var fireRate = 0.05;
		var bulletsPerClip : int = 40;
		var clips : int = 15;
		var bulletsLeft : int;
		var reloadTime = 1.0;
		var NoAimErrorAngle = 3.0;
		var AimErrorAngle = 0.0;
	}
	var machineGun : MachineGun;
	@HideInInspector
	var errorAngle : float;
	private var nextFireTime = 0.0;
	
	//Knife variables
	class Knife{
		var bullet : Transform;
		var fireSound : AudioClip;
		var fireRate : float = 0.5;
		var delayTime : float = 0;
	}
	var knife : Knife;
	
	//Rotation realisn variables
	class RotationReal{
		var RotationAmplitude : float = 2;
		var smooth : float = 7;
	}
	var RotRealism : RotationReal;
	private var currentAnglex : float;
	private var currentAngley : float;
	
	//Smooth move variables
	class SmoothMov {
		var maxAmount = 0.5;
		var Smooth = 3.0;
	}
	var SmoothMovement : SmoothMov;
	private var DefaultPos : Vector3;
	
	//Camera Recoil effect NOTE : Be sure that is your player camera is tagged as "MainCamera"
	class cameraRecoil{
		var recoilPower : float = 0.5;
		var shakeAmount : float = 6;
		var smooth : float = 3;
	}
	var CameraRecoil : cameraRecoil;
	private var camDefaultRotation : Quaternion;
	private var camPos : Quaternion;
	
	//Awake function is always called before Start function
	function Awake(){
		//Find nesessary objects and scripts (Player, CharacterMotor script, and weapon projectile spawn points etc.)
		player = GameObject.FindWithTag("Player");
		motor = player.GetComponent(FPScontroller);
		controller = player.GetComponent(CharacterController);
		mouseLook = gameObject.FindWithTag("LookObject").GetComponent("FPSMouseLook");
	}
	
	function Start (){
		//Aim mode walk sway control
		managerObject = gameObject.FindWithTag("WeaponManager");
		walkSway = managerObject.GetComponent("WalkSway");
		defaultBobbingAmount = walkSway.bobbingAmount;
		
		//Camera recoil
		camDefaultRotation = camera.main.transform.localRotation;
		
		//Aim setup
		defaultFov = camera.main.fieldOfView;
		defaultPosition = transform.localPosition;
		
		//Call machineGun awake
		if(GunType == gunType.MACHINE_GUN){
			machineGunAwake();
		}
		//Call grenadelauncher awake
		if(GunType == gunType.GRENADE_LAUNCHER){
			grenadeLauncherAwake();
		}
		
		//Call shotgun Awake
		if(GunType == gunType.SHOTGUN){
			shotGunAwake();
		}
		
		//Call knife awake
		if(GunType == gunType.KNIFE){
			knifeAwake();
		}
	}
	
	function Update (){
		if(Time.timeScale < 0.01)
			return;
		Aiming();
		RotationRealism();
		SmoothMove();
		//PickUpUpdate();
		//input();
		if(Recoil){
			cameraRecoilDo();
		}
		//Call machine gun fixed update function
		if(GunType == gunType.MACHINE_GUN){
			machineGunFixedUpdate();
		}
		//Call grenade launcher fixed update function
		if(GunType == gunType.GRENADE_LAUNCHER){
			grenadeLauncherFixedUpdate();
		}
		
		//Call shotgun fixed update function
		if(GunType == gunType.SHOTGUN){
			shotGunFixedUpdate ();
		}
		if(motor.Running){
			aimed = false;
		}
	}
	
	//////////////////////////////////////////////////INPUT//////////////////////////////////////////////////////////////////////
	function LateUpdate(){
		if(Time.timeScale < 0.01)
			return;
		//1.Aim input 
		if(Input.GetButtonDown("Fire2") && canAim && !motor.Running){
			aimed = !aimed;
		}
		//2.Fire input 
		//Automatic fire input
		if(Input.GetButton("Fire1") && canFire && !singleFire){
			fire = true;
		}else{
			fire = false;
		}
		//Single fire iputs
		if(GunType == gunType.MACHINE_GUN){
			//Single fire input for machine gun mode
			if(Input.GetButtonDown("Fire1") && canFire && !isReload && singleFire){
				machineGunFire();
			}else{
				machineGunStopFire ();
			}
		}
		
		if(GunType == gunType.GRENADE_LAUNCHER){
			//Single fire input for grenade launcher mode
			if(Input.GetButtonDown("Fire1") && canFire && !isReload && singleFire){
				grenadeLauncherFIre();
			}
		}
		
		if(GunType == gunType.SHOTGUN){
			//Single fire input for shotgun mode
			if(Input.GetButtonDown("Fire1") && canFire && !isReload && singleFire){
				shotGunFire ();
			}	
		}
		
		if(GunType == gunType.KNIFE){
			if(Input.GetButtonDown("Fire1") && canFire && !isReload && singleFire){
				knifeOneShot();
			}
		}
		
		//3.Reload input
		if(Input.GetKeyDown("r") && !isReload && machineGun.clips > 0){
			if(GunType == gunType.MACHINE_GUN && machineGun.bulletsLeft != machineGun.bulletsPerClip){
				machineGunReload();
			}
			if(GunType == gunType.SHOTGUN && ShotGun.bulletsLeft != ShotGun.bulletsPerClip){
				shotGunReload();
			}
		}
	}
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	function firePointSetup(){
		//Make fire point be directly to center of screen, to avoid out of crosshair fire bug
		var tempPos : Vector3 = Camera.main.ScreenToWorldPoint( Vector3(Screen.width/2, Screen.height/2, Camera.main.nearClipPlane));
  	 	firePoint.position = tempPos;
	}
	
	///////////////////////////////////////////////MACHINE GUN FUNCTIONS///////////////////////////////////////////////////////
	function machineGunAwake(){
		machineGun.bulletsLeft = machineGun.bulletsPerClip;
		//Deactivate muzzleFlash if we didnt
		if(machineGun.muzzleFlash){
			machineGun.muzzleFlash.active = false;
		}
		canAim = true;
		canFire = true;
	}
	
	function machineGunFixedUpdate (){
		//Machine gun fire
		if(fire && !isReload){
			machineGunFire();
		}else{
			machineGunStopFire();
			if(machineGun.muzzleFlash){
				machineGun.muzzleFlash.active = false;
			}
		}
	
		if(isReload){
			//motor.canRun = false;
			canAim = false;
		}
	}
	
	function machineGunFire (){
		if (machineGun.bulletsLeft == 0)
			return;
	
		// If there is more than one bullet between the last and this frame
		// Reset the nextFireTime
		if (Time.time - machineGun.fireRate > nextFireTime){
			nextFireTime = Time.time - Time.deltaTime;
		}
		// Keep firing until we used up the fire time
		while( nextFireTime < Time.time && machineGun.bulletsLeft != 0)
		{
			machineGunOneShot();
			nextFireTime += machineGun.fireRate;
		}
		//motor.canRun = false;
	
	}
	
	function machineGunStopFire (){
		motor.canRun = true;
	}
	
	function machineGunOneShot () {
			if(!aimed){
				//Before fire, move aim point to right position
				firePointSetup();
			}
			var oldRotation = firePoint.rotation;
			firePoint.rotation =  Quaternion.Euler(Random.insideUnitSphere * errorAngle) * transform.rotation;
			var instantiatedProjectile;
			if(!aimed){
				instantiatedProjectile = Instantiate (machineGun.bullet, firePoint.position, firePoint.rotation);
			}else{
				var pos : Vector3 = Camera.main.ScreenToWorldPoint( Vector3(Screen.width/2, Screen.height/2, Camera.main.nearClipPlane));
				instantiatedProjectile = Instantiate (machineGun.bullet, pos, firePoint.rotation);
			}
			firePoint.rotation = oldRotation;
			lastShot = Time.time;
			machineGun.bulletsLeft--;
			//Play fire sound attached to a Weapon object
			audio.clip = machineGun.fireSound;
			audio.Play();
			//Do a light effect when shoot
			machineGunMuzzleFlash();
			//Send message to weapon animation script
			if(aimed && Aim.playAnimation){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			if(!aimed){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			if(Recoil){
				mouseLook.Recoil(CameraRecoil.recoilPower);
				machineGunCameraRecoil();
			}
	
		// Reload gun in reload Time
		if(machineGun.clips > 0)			
		if (machineGun.bulletsLeft == 0){
			noBullets = true;
			yield WaitForSeconds(1);
			if(!isReload){
				machineGunReload();
			}
		}
	}
	
	function machineGunMuzzleFlash(){
		
		if(machineGun.muzzleFlash){
			machineGun.muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.Range(0, 359), Vector3.left);
			machineGun.muzzleFlash.active = true;
		}
		if(machineGun.pointLight){
			machineGun.pointLight.enabled = true;
		}
		yield WaitForSeconds(0.04);
		if(machineGun.muzzleFlash){
			machineGun.muzzleFlash.active = false;
		}
		if(machineGun.pointLight){
			machineGun.pointLight.enabled = false;
		}
	}
	
	function machineGunReload () {
		isReload = true;
		aimed = false;
		canAim = false;
		BroadcastMessage ("Reloading", machineGun.reloadTime, SendMessageOptions.DontRequireReceiver);
		//Play reload sound
		audio.clip = machineGun.reloadSound;
		audio.Play();
		// Wait for reload time first - then add more bullets!
		yield WaitForSeconds(machineGun.reloadTime);
	
		// We have a clip left reload
		if (machineGun.clips > 0)
		{
		var difference = machineGun.bulletsPerClip-machineGun.bulletsLeft;
			if(machineGun.clips > difference ){
				machineGun.clips = machineGun.clips - difference;
				machineGun.bulletsLeft = machineGun.bulletsLeft + difference;
			}else{
				machineGun.bulletsLeft = machineGun.bulletsLeft + machineGun.clips;
				machineGun.clips = 0;
			}
			noBullets = false;
			isReload = false;
			canAim = true;
			motor.canRun = true;
		}
	}
	
	function machineGunCameraRecoil(){
		camPos = Quaternion.Euler (Random.Range(0, -CameraRecoil.shakeAmount), Random.Range(-CameraRecoil.shakeAmount, CameraRecoil.shakeAmount), 0);
		yield WaitForSeconds(0.05);
		camPos = camDefaultRotation;
	}
	////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	/////////////////////////////////////////////////////////GRENADE LAUNCHER FUNCTIONS////////////////////////////////////////////
	function grenadeLauncherAwake(){
		canAim = true;
		canFire = true;
	}
	
	function grenadeLauncherFixedUpdate (){
		//GrenadeLauncher fire
		if(fire && !isReload){
			grenadeLauncherFIre();
			//motor.canRun = false;
		}else{
			motor.canRun = true;
		}
	}
	
	function grenadeLauncherFIre (){
		// Did the time exceed the reload time?
		if (grenadeLauncher.ammoCount == 0 || !canFire)
			return;
	
		// If there is more than one bullet between the last and this frame
		// Reset the nextFireTime
		if (Time.time - grenadeLauncher.reloadTime > nextFireTime){
			nextFireTime = Time.time - Time.deltaTime;
		}
		// Keep firing until we used up the fire time
		while( nextFireTime < Time.time && grenadeLauncher.ammoCount > 0)
		{
			grenadeLauncherOneShot();
			nextFireTime += grenadeLauncher.reloadTime;
		}
		//motor.canRun = false;
	
	}
	
	function grenadeLauncherOneShot (){
		if(grenadeLauncher.shotDelay > 0){
			//Send message to weapon animation script
			if(aimed && Aim.playAnimation){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			if(!aimed){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			if(Recoil){
				mouseLook.Recoil(CameraRecoil.recoilPower);
				grenadeLauncherCameraRecoil();
			}
			grenadeLauncherReload();
			yield WaitForSeconds(grenadeLauncher.shotDelay);
		}
		// create a new projectile, use the same position and rotation as the Launcher.
		var instantiatedProjectile  = Instantiate(grenadeLauncher.projectile, firePoint.position, firePoint.rotation); 
		// Give it an initial forward velocity. The direction is along the z-axis of the missile launcher's transform.
		instantiatedProjectile.velocity = transform.TransformDirection(Vector3 (0, 0, grenadeLauncher.initialSpeed));
		
		// Ignore collisions between the missile and the character controller
		var c : Collider;
		for(c in transform.root.GetComponentsInChildren(Collider))
			Physics.IgnoreCollision(instantiatedProjectile.collider, c);
		
		lastShot = Time.time;
		grenadeLauncher.ammoCount--;
		audio.clip = grenadeLauncher.fireSound;
		audio.Play();
		if(grenadeLauncher.shotDelay == 0){
			//Send message to weapon animation script
			if(aimed && Aim.playAnimation){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			if(!aimed){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			if(Recoil){
				mouseLook.Recoil(CameraRecoil.recoilPower);
				grenadeLauncherCameraRecoil();
			}
			if(grenadeLauncher.ammoCount > 0){
				grenadeLauncherReload();
			}
		}
	}
	
	function grenadeLauncherReload(){
		isReload = true;
		yield WaitForSeconds(grenadeLauncher.waitBeforeReload);
		aimed = false;
		BroadcastMessage ("Reloading", grenadeLauncher.reloadTime, SendMessageOptions.DontRequireReceiver);
		//Play reload sound
		audio.clip = grenadeLauncher.reloadSound;
		audio.Play();
		yield WaitForSeconds(grenadeLauncher.reloadTime);
		isReload = false;
	}
	
	function grenadeLauncherCameraRecoil(){
		camPos = Quaternion.Euler (Random.Range(-CameraRecoil.shakeAmount*1.5, -CameraRecoil.shakeAmount), Random.Range(CameraRecoil.shakeAmount/3, CameraRecoil.shakeAmount/2), 0);
		yield WaitForSeconds(0.1);
		camPos = camDefaultRotation;
	}
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	
	//////////////////////////////////////////////////SHOTGUN FUNCTIONS/////////////////////////////////////////////////////////
	function shotGunAwake(){
		ShotGun.bulletsLeft = ShotGun.bulletsPerClip;
		if(ShotGun.smoke){
			ShotGun.smoke.emit = false;
		}
		canAim = true;
		canFire = true;
	}
	
	function shotGunFixedUpdate (){
		if(fire && !isReload){
			shotGunFire();
		}else{
			shotGunStopFire();
		}	
		
		if(isReload){
			//motor.canRun = false;
			canAim = false;
		}
	}
	
	function shotGunFire (){
		if (ShotGun.bulletsLeft == 0)
			return;
	
		// If there is more than one bullet between the last and this frame
		// Reset the nextFireTime
		if (Time.time - ShotGun.fireRate > nextFireTime)
			nextFireTime = Time.time - Time.deltaTime;
		
		// Keep firing until we used up the fire time
		while( nextFireTime < Time.time && ShotGun.bulletsLeft != 0)
		{
			shotGunOneShot();
			nextFireTime += ShotGun.fireRate;
		}
		//motor.canRun = false;
	}
	
	function shotGunStopFire (){
		motor.canRun = true;
	}
	
	function shotGunOneShot () {
		//Before fire, move aim point to right position
		firePointSetup();
		var oldRotation = firePoint.rotation;
		for (var i : int = 0;i < ShotGun.fractions; i++) {
			firePoint.rotation =  Quaternion.Euler(Random.insideUnitSphere * ShotGun.errorAngle) * transform.rotation;
			var instantiatedProjectile = Instantiate (ShotGun.bullet, firePoint.position, firePoint.rotation);
		}
			firePoint.rotation = oldRotation;
			lastShot = Time.time;	
			//Play fire sound attached to a Weapon object
			audio.clip = ShotGun.fireSound;
			audio.Play();
			ShotGun.bulletsLeft--;
			//Send message to weapon animation script
			if(aimed && Aim.playAnimation){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			if(!aimed){
				BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			}
			shotGunSmokeEffect();
			if(Recoil){
				shotGunCameraRecoil();
				mouseLook.Recoil(CameraRecoil.recoilPower);
			}
	
		// Reload gun in reload Time	
		if(ShotGun.clips > 0)	
		if (ShotGun.bulletsLeft == 0){
			noBullets = true;
			yield WaitForSeconds(1);
			if(!isReload){
				shotGunReload();
			}
		}
	}
	
	function shotGunReload () {
		isReload = true;
		aimed = false;
		BroadcastMessage ("Reloading", ShotGun.reloadTime, SendMessageOptions.DontRequireReceiver);
		//Play reload sound
		audio.clip = ShotGun.reloadSound;
		audio.Play();
		// Wait for reload time first - then add more bullets!
		yield WaitForSeconds(ShotGun.reloadTime);
	
		// We have a clip left reload
		if (ShotGun.clips > 0){
		var difference = ShotGun.bulletsPerClip-ShotGun.bulletsLeft;
			if(ShotGun.clips > difference ){
				ShotGun.clips = ShotGun.clips - difference;
				ShotGun.bulletsLeft = ShotGun.bulletsLeft + difference;
			}else{
				ShotGun.bulletsLeft = ShotGun.bulletsLeft + ShotGun.clips;
				ShotGun.clips = 0;
			}
			noBullets = false;
			isReload = false;
			canAim = true;
			motor.canRun = true;
		}
	}
	
	function shotGunSmokeEffect(){
		if(!ShotGun.smoke)
			return;
		ShotGun.smoke.emit = true;
		yield WaitForSeconds(0.3);
		ShotGun.smoke.emit = false;	
	}
	
	function shotGunCameraRecoil(){
		camPos = Quaternion.Euler (Random.Range(-CameraRecoil.shakeAmount*1.5, -CameraRecoil.shakeAmount), Random.Range(CameraRecoil.shakeAmount/3, CameraRecoil.shakeAmount/2), 0);
		yield WaitForSeconds(0.1);
		camPos = camDefaultRotation;
	}
	//////////////////////////////////////////////////////////////////////////////////////////////////
	
	/////////////////////////////////////////////////KNIFE FUNCTIONS///////////////////////////////////
	function knifeAwake(){
		canAim = false;
		canFire = true;
	}
	
	function knifeOneShot () {
		if (Time.time > knife.fireRate + lastShot){
			//Before fire, move aim point to right position
			firePointSetup();
			//Play fire sound attached to a Weapon object
			audio.clip = knife.fireSound;
			audio.Play();
			BroadcastMessage ("Fire", SendMessageOptions.DontRequireReceiver);
			
			yield WaitForSeconds(knife.delayTime);
			
			var instantiatedProjectile = Instantiate (knife.bullet, firePoint.position, firePoint.rotation);
			lastShot = Time.time;	
		}
	}
	/////////////////////////////////////////////////////////////////////////////////////////////////
	
	////////////////////////////////////////////////AIM FUNCTIONS////////////////////////////////////
	function Aiming(){
		//Change camera FOV and weapon transform to aim values
		if(aimed && !motor.Running){
		 	currentPosition = Aim.aimPosition;
			currentFov = Aim.toFov;
			errorAngle = machineGun.AimErrorAngle;
			walkSway.bobbingAmount = Aim.aimBobbingAmount;
			//mouseLook.sensitivityX = mouseLook.defaultSensitivityX/1.1;
			//mouseLook.sensitivityY = mouseLook.defaultSensitivityY/1.1;
		} else {
			currentPosition = defaultPosition;
			currentFov = defaultFov;
			errorAngle = machineGun.NoAimErrorAngle;
			walkSway.bobbingAmount = defaultBobbingAmount;
			//mouseLook.sensitivityX = mouseLook.defaultSensitivityX;
			//mouseLook.sensitivityY = mouseLook.defaultSensitivityY;
		}
		//Change weapon position and camera FOV when player aim or no aim
		transform.localPosition = Vector3.Lerp(transform.localPosition, currentPosition, Time.deltaTime/Aim.smoothTime);
		camera.main.fieldOfView = Mathf.Lerp(camera.main.fieldOfView, currentFov, Time.deltaTime/Aim.smoothTime);
	}
	/////////////////////////////////////////////////////////////////////////////////////////////////
	function cameraRecoilDo(){
		camera.main.transform.localRotation = Quaternion.Slerp(camera.main.transform.localRotation, camPos, Time.deltaTime * CameraRecoil.smooth); 
	}
	
	function RotationRealism (){
		//ROTATION REALISM  
		var Xinput=Input.GetAxis("Mouse X");
		var Yinput=Input.GetAxis("Mouse Y");
		var currentAngley : float;
		var currentAnglex : float;
	
		if(Mathf.Abs(Xinput)>0.1){ 
			if(Xinput < 0.1){ 
				//Left
				currentAngley = -RotRealism.RotationAmplitude * Mathf.Abs(Xinput);	
			} 
			else if(Xinput > 0.1){ 
				//Right; 
				currentAngley = RotRealism.RotationAmplitude *  Mathf.Abs(Xinput);
			} 
		} else { 
			//Center
			currentAngley = 0;
		} 
		
		if(Mathf.Abs(Yinput)>0.1){ 
			if(Yinput < 0.1){ 
				//Down
				currentAnglex = RotRealism.RotationAmplitude * Mathf.Abs(Yinput);
			} 
			else if(Yinput > 0.1){ 
				//Up
				currentAnglex = -RotRealism.RotationAmplitude *  Mathf.Abs(Yinput);		
			} 
		} else { 
			//Center
			currentAnglex = 0;
		} 
		
		var target = Quaternion.Euler (currentAnglex, currentAngley, 0);
		transform.localRotation = Quaternion.Slerp(transform.localRotation, target, Time.deltaTime * RotRealism.smooth);
	}
	
	function SmoothMove (){
		//var MoveOnX : float = -Input.GetAxis("Horizontal");
		var MoveOnY = controller.velocity.y;
		var m : float;
		var MoveOnZ : float = -Input.GetAxis("Vertical");
		/*
		if (MoveOnX > SmoothMovement.maxAmount)
		MoveOnX = SmoothMovement.maxAmount;
		
		if (MoveOnX < -SmoothMovement.maxAmount)
		MoveOnX = -SmoothMovement.maxAmount;
		*/
		if(MoveOnY > SmoothMovement.maxAmount+1)
		m = -SmoothMovement.maxAmount;
		
		if(MoveOnY < -SmoothMovement.maxAmount-1)
		m = SmoothMovement.maxAmount;
		
		if (MoveOnZ> SmoothMovement.maxAmount)
		MoveOnZ = SmoothMovement.maxAmount;
		
		if (MoveOnZ < -SmoothMovement.maxAmount)
		MoveOnZ = -SmoothMovement.maxAmount;
		
		//var NewGunPos = new Vector3 (defaultPosition.x+ MoveOnX, defaultPosition.y + m, defaultPosition.z+ MoveOnZ);
		var NewGunPos = new Vector3 (transform.localPosition.x, transform.localPosition.y + m, transform.localPosition.z + MoveOnZ);
		transform.localPosition = Vector3.Lerp (transform.localPosition, NewGunPos, Time.deltaTime * SmoothMovement.Smooth);
	}
	
	function selectWeapon(){
		canFire = true;
		if(GunType != gunType.KNIFE){
			canAim = true;
		}
		aimed = false;
		BroadcastMessage ("takeIn");
	}
	
	function deselectWeapon(){
		aimed = false;
		isReload = false;
		canFire = false;
		canAim = false;
		isReload = false;
		BroadcastMessage ("takeOut");
	}
}

@script RequireComponent (AudioSource)
@script AddComponentMenu ("FPS system/Weapon System/WeaponScript")

I’ve just copied the script into my project and created dummy classes for the missing stuff and i don’t get that error. So are you sure you posted your actual code here?

thank you, i fixed the errors, but there is another one, it says BCE0018: The name FPSMouseLook does not denote a valid type
Line (29,29)

no this error, im not even sure what it means, and there are three of these errors.