Skip to content

Commit f8fcfbd

Browse files
committed
fix: 添加一个注入事件 防止在极端情况下没子弹
1 parent e6cbc9e commit f8fcfbd

4 files changed

Lines changed: 39 additions & 44 deletions

File tree

InfiniteAmmoEvent.cs

Lines changed: 32 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -6,51 +6,49 @@ namespace LabAPI_InfiniteAmmo;
66
/// <summary>
77
/// 无限子弹事件处理器。
88
/// </summary>
9-
public class InfiniteAmmoEvent : CustomEventsHandler
10-
{
11-
/// <summary>
12-
/// 初始子弹
13-
/// </summary>
14-
/// <param name="ev">PlayerReloadingWeaponEventArgs</param>
15-
public override void OnPlayerChangedRole(PlayerChangedRoleEventArgs ev)
16-
{
9+
public class InfiniteAmmoEvent : CustomEventsHandler {
10+
/// <inheritdoc />
11+
public override void OnPlayerChangedRole(PlayerChangedRoleEventArgs ev) {
1712
// 死人不配
1813
if (!ev.Player.IsAlive) 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);
14+
// 切换角色时给每种子弹类型 10 发子弹,让玩家能换弹
15+
ev.Player.SetAmmo(ItemType.Ammo9x19, 10);
16+
ev.Player.SetAmmo(ItemType.Ammo12gauge, 10);
17+
ev.Player.SetAmmo(ItemType.Ammo44cal, 10);
18+
ev.Player.SetAmmo(ItemType.Ammo556x45, 10);
19+
ev.Player.SetAmmo(ItemType.Ammo762x39, 10);
2520
}
2621

27-
/// <summary>
28-
/// 无限子弹
29-
/// </summary>
30-
/// <param name="ev">PlayerReloadingWeaponEventArgs</param>
31-
public override void OnPlayerReloadingWeapon(PlayerReloadingWeaponEventArgs ev)
32-
{
22+
/// <inheritdoc />
23+
public override void OnPlayerChangedItem(PlayerChangedItemEventArgs ev) {
24+
// 死人不配
25+
if (!ev.Player.IsAlive) return;
26+
// 更改手持物品时给每种子弹类型 10 发子弹,让玩家能换弹
27+
ev.Player.SetAmmo(ItemType.Ammo9x19, 10);
28+
ev.Player.SetAmmo(ItemType.Ammo12gauge, 10);
29+
ev.Player.SetAmmo(ItemType.Ammo44cal, 10);
30+
ev.Player.SetAmmo(ItemType.Ammo556x45, 10);
31+
ev.Player.SetAmmo(ItemType.Ammo762x39, 10);
32+
}
33+
34+
/// <inheritdoc />
35+
public override void OnPlayerReloadingWeapon(PlayerReloadingWeaponEventArgs ev) {
36+
// 无限子弹
3337
// 没这个判断的话玩家拿 127 就会 BOOM !
3438
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));
39+
// 枪最大子弹 + 10
40+
ev.Player.SetAmmo(ev.FirearmItem.AmmoType, (ushort)(ev.FirearmItem.MaxAmmo + 10));
3741
}
3842

39-
/// <summary>
40-
/// 禁止玩家掉落子弹
41-
/// </summary>
42-
/// <param name="ev">PlayerDroppingAmmoEventArgs</param>
43-
public override void OnPlayerDroppingAmmo(PlayerDroppingAmmoEventArgs ev)
44-
{
43+
/// <inheritdoc />
44+
public override void OnPlayerDroppingAmmo(PlayerDroppingAmmoEventArgs ev) {
45+
// 禁止丢子弹
4546
ev.IsAllowed = false;
4647
}
4748

48-
/// <summary>
49-
/// 玩家拾取子弹时始终为0
50-
/// </summary>
51-
/// <param name="ev">PlayerPickingUpAmmoEventArgs</param>
52-
public override void OnPlayerPickingUpAmmo(PlayerPickingUpAmmoEventArgs ev)
53-
{
49+
/// <inheritdoc />
50+
public override void OnPlayerPickingUpAmmo(PlayerPickingUpAmmoEventArgs ev) {
51+
// 玩家拾取子弹时始终为0
5452
// 缺一不可
5553
ev.AmmoPickup.Ammo = 0;
5654
ev.AmmoAmount = 0;

InfiniteAmmoMain.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@ namespace LabAPI_InfiniteAmmo;
88
/// <summary>
99
/// 无限子弹 插件。
1010
/// </summary>
11-
public class InfiniteAmmoMain : Plugin
12-
{
11+
public class InfiniteAmmoMain : Plugin {
1312
/// <summary>
1413
/// 单例模式。
1514
/// </summary>
@@ -30,7 +29,7 @@ public class InfiniteAmmoMain : Plugin
3029
/// <summary>
3130
/// 插件版本。
3231
/// </summary>
33-
public override Version Version => new (1, 0, 0, 0);
32+
public override Version Version => new (1, 0, 1, 0);
3433

3534
/// <summary>
3635
/// 需要的 LabApi 版本。
@@ -43,8 +42,7 @@ public class InfiniteAmmoMain : Plugin
4342
public InfiniteAmmoEvent Events { get; private set; }
4443

4544
// 启用插件。
46-
public override void Enable()
47-
{
45+
public override void Enable() {
4846
Singleton = this;
4947

5048
Events = new InfiniteAmmoEvent();
@@ -53,8 +51,7 @@ public override void Enable()
5351
}
5452

5553
// 禁用插件。
56-
public override void Disable()
57-
{
54+
public override void Disable() {
5855
CustomHandlersManager.UnregisterEventsHandler(Events);
5956

6057
Events = null;

Properties/AssemblyInfo.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@
2828
// 生成号
2929
// 修订号
3030
//
31-
[assembly: AssemblyVersion("1.0.0.0")]
32-
[assembly: AssemblyFileVersion("1.0.0.0")]
31+
[assembly: AssemblyVersion("1.0.1.0")]
32+
[assembly: AssemblyFileVersion("1.0.1.0")]

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# LabAPI_InfiniteAmmo
22

33
[![GitHub release](https://flat.badgen.net/github/release/TASA-Ed/LabAPI_InfiniteAmmo)](https://github.com/TASA-Ed/LabAPI_InfiniteAmmo/releases)
4-
[![LabAPI Version](https://flat.badgen.net/static/LabAPI/v1.1.4)](https://github.com/northwood-studios/LabAPI)
4+
[![LabAPI Version](https://flat.badgen.net/static/LabAPI/v1.1.5)](https://github.com/northwood-studios/LabAPI)
55
[![License](https://flat.badgen.net/github/license/TASA-Ed/LabAPI_InfiniteAmmo/)](https://github.com/TASA-Ed/LabAPI_InfiniteAmmo/blob/master/LICENSE)
66

77
A LabAPI plugin that grants players infinite ammo.

0 commit comments

Comments
 (0)