示例#1
0
        private void OnEnable()
        {
            if (!player.entity.IsAttached)
            {
                return;
            }

            var reloadingWeapon = ReloadingWeapon.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);

            reloadingWeapon.Player            = player.entity;
            reloadingWeapon.WeaponId          = weapon.Id;
            reloadingWeapon.WeaponReloadState = false;
            reloadingWeapon.Send();
        }
示例#2
0
        public void InterruptReload()
        {
            cancelReload = true;

            var reloadingWeapon = ReloadingWeapon.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);

            reloadingWeapon.Player            = player.entity;
            reloadingWeapon.WeaponId          = weapon.Id;
            reloadingWeapon.WeaponReloadState = false;
            reloadingWeapon.Send();

            //Send a command to set the ammo in magazine.
            var weaponReloaded = WeaponReloaded.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);

            weaponReloaded.Player           = weapon.Player;
            weaponReloaded.WeaponId         = weapon.Id;
            weaponReloaded.NewCurrentAmount = BeforeReload;
            weaponReloaded.Send();
        }
示例#3
0
文件: Player.cs 项目: gamehunt/EXILED
 /// <summary>
 /// Invoked before reloading a weapon.
 /// </summary>
 /// <param name="ev">The <see cref="ReloadingWeaponEventArgs"/> instance.</param>
 public static void OnReloadingWeapon(ReloadingWeaponEventArgs ev) => ReloadingWeapon.InvokeSafely(ev);
示例#4
0
        /// <summary>
        /// Gets called whenever the weapon gets reloaded or cancelled.
        /// </summary>
        /// <param name="reloadingWeapon"></param>
        public override void OnEvent(ReloadingWeapon reloadingWeapon)
        {
            var playerState = reloadingWeapon.Player.GetState <IPlayer>();

            playerState.Weapons[reloadingWeapon.WeaponId].IsReloading = reloadingWeapon.WeaponReloadState;
        }
示例#5
0
        public IEnumerator Reload()
        {
            if (weapon.CurrentAmmoInMagazine == weapon.MagazineSize || weapon.EntireAmmo <= 0 || weapon.IsReloading)
            {
                yield break;
            }

            BeforeReload = weapon.CurrentAmmoInMagazine;
            cancelReload = false;

            if (cancelReload)
            {
                yield break;
            }

            //Send a command to notify that this weapon is reloading.
            var reloadingWeapon = ReloadingWeapon.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);

            reloadingWeapon.Player            = weapon.Player;
            reloadingWeapon.WeaponReloadState = true;
            reloadingWeapon.WeaponId          = weapon.Id;
            reloadingWeapon.Send();

            if (cancelReload)
            {
                yield break;
            }

            //Wait
            yield return(new WaitForSeconds(weapon.ReloadTime - .25f));

            if (cancelReload)
            {
                yield break;
            }

            //Send a command to notify that this weapon has reloaded.
            reloadingWeapon                   = ReloadingWeapon.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);
            reloadingWeapon.Player            = weapon.Player;
            reloadingWeapon.WeaponReloadState = false;
            reloadingWeapon.WeaponId          = weapon.Id;
            reloadingWeapon.Send();

            if (cancelReload)
            {
                yield break;
            }

            //Wait
            yield return(new WaitForSeconds(.25f));

            if (cancelReload)
            {
                yield break;
            }

            //Send a command to set the ammo in magazine.
            var weaponReloaded = WeaponReloaded.Create(GlobalTargets.OnlyServer, ReliabilityModes.ReliableOrdered);

            weaponReloaded.Player           = weapon.Player;
            weaponReloaded.WeaponId         = weapon.Id;
            weaponReloaded.NewCurrentAmount = weapon.EntireAmmo >= weapon.MagazineSize ? weapon.MagazineSize : weapon.EntireAmmo;
            weaponReloaded.Send();
        }