Skip to content

Commit 702588a

Browse files
committed
fix: 修改代码使其可用
1 parent 524a664 commit 702588a

2 files changed

Lines changed: 104 additions & 48 deletions

File tree

InfiniteAmmoEvent.cs

Lines changed: 51 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,58 @@
11
using LabApi.Events.Arguments.PlayerEvents;
22
using LabApi.Events.CustomHandlers;
33

4-
namespace LabAPI_InfiniteAmmo
4+
namespace LabAPI_InfiniteAmmo;
5+
6+
/// <summary>
7+
/// 无限子弹事件处理器。
8+
/// </summary>
9+
public class InfiniteAmmoEvent : CustomEventsHandler
510
{
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)
753
{
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;
2057
}
2158
}

InfiniteAmmoMain.cs

Lines changed: 53 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -3,43 +3,62 @@
33
using LabApi.Loader.Features.Plugins;
44
using System;
55

6-
namespace LabAPI_InfiniteAmmo
6+
namespace LabAPI_InfiniteAmmo;
7+
8+
/// <summary>
9+
/// 无限子弹 插件。
10+
/// </summary>
11+
public class InfiniteAmmoMain : Plugin
712
{
813
/// <summary>
9-
/// 无限子弹 插件。
14+
/// 单例模式。
15+
/// </summary>
16+
public static InfiniteAmmoMain Singleton { get; private set; }
17+
18+
/// <summary>
19+
/// 插件名称。
20+
/// </summary>
21+
public override string Name => "Infinite Ammo Plugin";
22+
/// <summary>
23+
/// 插件描述。
24+
/// </summary>
25+
public override string Description => "Grant players infinite ammunition";
26+
/// <summary>
27+
/// 插件作者。
28+
/// </summary>
29+
public override string Author => "TASA-Ed Studio";
30+
/// <summary>
31+
/// 插件版本。
32+
/// </summary>
33+
public override Version Version => new (1, 0, 0, 0);
34+
35+
/// <summary>
36+
/// 需要的 LabApi 版本。
37+
/// </summary>
38+
public override Version RequiredApiVersion => new (LabApiProperties.CompiledVersion);
39+
40+
/// <summary>
41+
/// 自定义事件处理器。
1042
/// </summary>
11-
public class InfiniteAmmoMain : Plugin
43+
public InfiniteAmmoEvent Events { get; private set; }
44+
45+
// 启用插件。
46+
public override void Enable()
47+
{
48+
Singleton = this;
49+
50+
Events = new InfiniteAmmoEvent();
51+
52+
CustomHandlersManager.RegisterEventsHandler(Events);
53+
}
54+
55+
// 禁用插件。
56+
public override void Disable()
1257
{
13-
/// <summary>
14-
/// 插件信息。
15-
/// </summary>
16-
public override string Name => "Infinite Ammo Plugin";
17-
public override string Description => "Give Player Infinite Ammo";
18-
public override string Author => "TASA-Ed Studio";
19-
20-
/// <summary>
21-
/// 插件版本。
22-
/// </summary>
23-
public override Version Version => new (0, 1, 0, 0);
24-
25-
/// <summary>
26-
/// 需要的 LabApi 版本。
27-
/// </summary>
28-
public override Version RequiredApiVersion => new (LabApiProperties.CompiledVersion);
29-
30-
/// <summary>
31-
/// Events handler object.
32-
/// </summary>
33-
public InfiniteAmmoEvent Events { get; } = new ();
34-
35-
public override void Enable()
36-
{
37-
CustomHandlersManager.RegisterEventsHandler(Events);
38-
}
39-
40-
public override void Disable()
41-
{
42-
CustomHandlersManager.UnregisterEventsHandler(Events);
43-
}
58+
CustomHandlersManager.UnregisterEventsHandler(Events);
59+
60+
Events = null;
61+
62+
Singleton = null;
4463
}
4564
}

0 commit comments

Comments
 (0)