-
Notifications
You must be signed in to change notification settings - Fork 0
/
AutoDrop.cs
96 lines (87 loc) · 3.15 KB
/
AutoDrop.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Configuration;
using Oxide.Core.Plugins;
using Rust;
namespace Oxide.Plugins
{
[Info("AutoDrop", "Hazmad", "1.0.3")]
[Description("Configurable filter for automatically dropping items from a player's inventory / on pickup.")]
class AutoDrop : RustPlugin
{
private Dictionary<ulong, List<string>> autoDropItems = new Dictionary<ulong, List<string>>();
protected override void LoadDefaultConfig()
{
Config.Clear();
SaveConfig();
}
private void LoadData()
{
autoDropItems = Interface.Oxide.DataFileSystem.ReadObject<Dictionary<ulong, List<string>>>("AutoDropItems");
}
private void SaveData()
{
Interface.Oxide.DataFileSystem.WriteObject("AutoDropItems", autoDropItems);
}
private void OnServerInitialized()
{
LoadData();
permission.RegisterPermission("autodrop.use", this);
}
private void Unload()
{
SaveData();
}
[ChatCommand("autodrop")]
private void AutoDropCommand(BasePlayer player, string cmd, string[] args)
{
if (permission.UserHasPermission(player.UserIDString, "autodrop.use"))
{
if (args.Length > 0)
{
List<string> itemShortnames = new List<string>();
foreach (string arg in args)
{
ItemDefinition itemDef = ItemManager.FindItemDefinition(arg.ToLower());
if (itemDef != null)
{
itemShortnames.Add(itemDef.shortname);
}
}
if (itemShortnames.Count > 0)
{
autoDropItems[player.userID] = itemShortnames;
SaveData();
player.ChatMessage("AutoDrop: Items registered for automatic drop.");
}
else
{
player.ChatMessage("AutoDrop: Invalid item shortnames provided.");
}
}
else
{
player.ChatMessage("AutoDrop: Usage: /autodrop <itemShortname1> <itemShortname2> ...");
}
}
else
{
player.ChatMessage("AutoDrop: You don't have permission to use this command.");
}
}
private void OnItemAddedToContainer(ItemContainer container, Item item)
{
if (container.playerOwner != null)
{
List<string> itemShortnames;
if (autoDropItems.TryGetValue(container.playerOwner.userID, out itemShortnames))
{
if (itemShortnames.Contains(item.info.shortname))
{
item.Drop(container.playerOwner.transform.position, container.playerOwner.transform.forward * 2f);
}
}
}
}
}
}