|
1 | 1 | using LabApi.Events.Arguments.PlayerEvents; |
2 | 2 | using LabApi.Events.CustomHandlers; |
3 | 3 |
|
4 | | -namespace LabAPI_InfiniteAmmo |
| 4 | +namespace LabAPI_InfiniteAmmo; |
| 5 | + |
| 6 | +/// <summary> |
| 7 | +/// 无限子弹事件处理器。 |
| 8 | +/// </summary> |
| 9 | +public class InfiniteAmmoEvent : CustomEventsHandler |
5 | 10 | { |
6 | | - public class InfiniteAmmoEvent : CustomEventsHandler |
| 11 | + /// <summary> |
| 12 | + /// 初始子弹 |
| 13 | + /// </summary> |
| 14 | + /// <param name="ev">PlayerReloadingWeaponEventArgs</param> |
| 15 | + public override void OnPlayerChangedRole(PlayerChangedRoleEventArgs ev) |
| 16 | + { |
| 17 | + // SCP 和机器人不配 |
| 18 | + if (ev.Player is not { IsAlive: true, IsSCP: false, IsDummy: false }) return; |
| 19 | + // 给每种子弹类型 1 发子弹,让玩家能换弹 |
| 20 | + ev.Player.SetAmmo(ItemType.Ammo9x19, 1); |
| 21 | + ev.Player.SetAmmo(ItemType.Ammo12gauge, 1); |
| 22 | + ev.Player.SetAmmo(ItemType.Ammo44cal, 1); |
| 23 | + ev.Player.SetAmmo(ItemType.Ammo556x45, 1); |
| 24 | + ev.Player.SetAmmo(ItemType.Ammo762x39, 1); |
| 25 | + } |
| 26 | + |
| 27 | + /// <summary> |
| 28 | + /// 无限子弹 |
| 29 | + /// </summary> |
| 30 | + /// <param name="ev">PlayerReloadingWeaponEventArgs</param> |
| 31 | + public override void OnPlayerReloadingWeapon(PlayerReloadingWeaponEventArgs ev) |
| 32 | + { |
| 33 | + // 没这个判断的话玩家拿 127 就会 BOOM ! |
| 34 | + if (ev.FirearmItem.Type is ItemType.GunSCP127 or ItemType.ParticleDisruptor) return; |
| 35 | + // 枪最大子弹 + 1 |
| 36 | + ev.Player.SetAmmo(ev.FirearmItem.AmmoType, (ushort)(ev.FirearmItem.MaxAmmo + 1)); |
| 37 | + } |
| 38 | + |
| 39 | + /// <summary> |
| 40 | + /// 禁止玩家掉落子弹 |
| 41 | + /// </summary> |
| 42 | + /// <param name="ev">PlayerDroppingAmmoEventArgs</param> |
| 43 | + public override void OnPlayerDroppingAmmo(PlayerDroppingAmmoEventArgs ev) |
| 44 | + { |
| 45 | + ev.IsAllowed = false; |
| 46 | + } |
| 47 | + |
| 48 | + /// <summary> |
| 49 | + /// 玩家拾取子弹时始终为0 |
| 50 | + /// </summary> |
| 51 | + /// <param name="ev">PlayerPickingUpAmmoEventArgs</param> |
| 52 | + public override void OnPlayerPickingUpAmmo(PlayerPickingUpAmmoEventArgs ev) |
7 | 53 | { |
8 | | - public override void OnPlayerDryFiringWeapon(PlayerDryFiringWeaponEventArgs ev) |
9 | | - { |
10 | | - ev.Player.SetAmmo(ev.FirearmItem.AmmoType, (ushort)(ev.Player.GetAmmo(ev.FirearmItem.AmmoType) + 1)); |
11 | | - } |
12 | | - /// <summary> |
13 | | - /// 禁止玩家掉落子弹 |
14 | | - /// </summary> |
15 | | - /// <param name="ev">PlayerDroppingAmmoEventArgs</param> |
16 | | - public override void OnPlayerDroppingAmmo(PlayerDroppingAmmoEventArgs ev) |
17 | | - { |
18 | | - ev.IsAllowed = false; |
19 | | - } |
| 54 | + // 缺一不可 |
| 55 | + ev.AmmoPickup.Ammo = 0; |
| 56 | + ev.AmmoAmount = 0; |
20 | 57 | } |
21 | 58 | } |
0 commit comments