编写SCPSL插件SCP1162
以下是一个简单的SCPSL插件SCP1162的编写示例:
using Exiled.API.Features;
using Exiled.Events.EventArgs;
using MEC;
using System;
using System.Collections.Generic;
namespace SCP1162
{
public class SCP1162 : Plugin<Config>
{
private static readonly Random Random = new Random();
private static readonly Dictionary<Player, List<Pickup>> PlayersItems = new Dictionary<Player, List<Pickup>>();
public override void OnEnabled()
{
base.OnEnabled();
Exiled.Events.Handlers.Player.PickingUpItem += OnPickingUpItem;
Exiled.Events.Handlers.Player.DroppingItem += OnDroppingItem;
Exiled.Events.Handlers.Player.Left += OnPlayerLeft;
}
public override void OnDisabled()
{
base.OnDisabled();
Exiled.Events.Handlers.Player.PickingUpItem -= OnPickingUpItem;
Exiled.Events.Handlers.Player.DroppingItem -= OnDroppingItem;
Exiled.Events.Handlers.Player.Left -= OnPlayerLeft;
}
private void OnPickingUpItem(PickingUpItemEventArgs ev)
{
if (!PlayersItems.ContainsKey(ev.Player))
PlayersItems[ev.Player] = new List<Pickup>();
PlayersItems[ev.Player].Add(ev.Pickup);
}
private void OnDroppingItem(DroppingItemEventArgs ev)
{
if (PlayersItems.ContainsKey(ev.Player))
PlayersItems[ev.Player].Remove(ev.Pickup);
}
private void OnPlayerLeft(LeftEventArgs ev)
{
if (PlayersItems.ContainsKey(ev.Player))
PlayersItems.Remove(ev.Player);
}
public void RefreshInventory(Player player)
{
// 清空玩家背包
foreach (var pickup in PlayersItems[player])
{
Timing.CallDelayed(Config.InventoryRefreshDelay, () =>
{
if (!pickup.IsDestroyed)
pickup.Destroy();
});
}
PlayersItems[player].Clear();
// 随机给予道具
for (int i = 0; i < Config.ItemsPerRefresh; i++)
{
Timing.CallDelayed(Config.InventoryRefreshDelay * i, () =>
{
var item = ItemManager.SpawnRandomItem(player.Position, Random.Next(0, Config.MaxItemSpawnCount));
PlayersItems[player].Add(item.Pickup);
item.Pickup.ForcePlayer(player);
});
}
}
}
}
此示例中的插件包含了以下功能:
- 当玩家捡起道具时,将道具添加到玩家的背包列表中。
- 当玩家丢弃道具时,将道具从玩家的背包列表中移除。
- 当玩家离开服务器时,从背包列表中移除该玩家的所有道具。
- 提供一个方法
RefreshInventory,用于刷新玩家的背包,清空原有的道具,并随机给予新的道具。
请注意,这只是一个简单的示例,你可能需要根据自己的需求进行修改和扩展
原文地址: https://www.cveoy.top/t/topic/h7Pu 著作权归作者所有。请勿转载和采集!