-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathCommandVTransfer.cs
110 lines (101 loc) · 4.5 KB
/
CommandVTransfer.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
97
98
99
100
101
102
103
104
105
106
107
108
109
using Rocket.API;
using Rocket.API.Extensions;
using Rocket.Unturned.Chat;
using Rocket.Unturned.Player;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
namespace VirtualStorage
{
class CommandVTransfer : IRocketCommand
{
internal static readonly string syntax = "<\"Container Name\"> <\"Playername\">";
internal static readonly string help = "Transfers a container to another player.";
public List<string> Aliases
{
get { return new List<string>() { "vtran", "vt" }; }
}
public AllowedCaller AllowedCaller
{
get { return AllowedCaller.Player; }
}
public string Help
{
get { return help; }
}
public string Name
{
get { return "vtransfer"; }
}
public List<string> Permissions
{
get { return new List<string> { "vtransfer" }; }
}
public string Syntax
{
get { return syntax; }
}
public void Execute(IRocketPlayer caller, string[] command)
{
if (command.Length == 0 || command.Length > 2)
{
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("vtransfer_help"));
return;
}
UnturnedPlayer player = (UnturnedPlayer)caller;
string targetPlayerName = command.GetStringParameter(1);
UnturnedPlayer targetPlayer;
if (targetPlayerName != null)
{
targetPlayer = UnturnedPlayer.FromName(targetPlayerName);
if (targetPlayer == null)
{
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("no_player_name"));
return;
}
}
else
{
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("no_player_name"));
return;
}
string cName = command.GetStringParameter(0);
if (string.IsNullOrEmpty(cName))
{
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("buy_no_name"), Color.red);
return;
}
Dictionary<string, object[]> containers = VirtualStorage.Database.GetContainerList(player.CSteamID);
object[] exists = containers.Values.FirstOrDefault(contents => contents[2].ToString().ToLower() == cName.ToLower());
if (exists == null)
{
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("container_name_not_found"), Color.red);
return;
}
Dictionary<string, object[]> targetContainers = VirtualStorage.Database.GetContainerList(targetPlayer.CSteamID);
if (targetContainers.Values.FirstOrDefault(contents => contents[2].ToString().ToLower() == cName.ToLower()) != null)
{
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("target_has_container"));
return;
}
if (targetContainers.Count > VirtualStorage.Instance.Configuration.Instance.MaxContainersPerPlayer && !(caller.HasPermission("vs.overridemax") || targetPlayer.HasPermission("vs.overridemax")))
{
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("target_max_reached", VirtualStorage.Instance.Configuration.Instance.MaxContainersPerPlayer), Color.red);
return;
}
string defaultContainer = VirtualStorage.Database.GetDefaultContainer(player.CSteamID);
if (!string.IsNullOrEmpty(defaultContainer) && defaultContainer.ToLower() == cName.ToLower())
{
// Close and remove default container from player in preparation to transfer container.
VirtualStorage.Database.SaveDefaultContainer(player.CSteamID, string.Empty);
if (VirtualStorage.Containers.ContainsKey(player.CSteamID))
{
VirtualStorage.Containers[player.CSteamID].Cleanup();
}
}
VirtualStorage.Database.TransferContainer(player.CSteamID, targetPlayer.CSteamID, cName);
UnturnedChat.Say(caller, VirtualStorage.Instance.Translate("sent_to_player", cName, targetPlayer.CharacterName.Truncate(16)), Color.cyan);
UnturnedChat.Say(targetPlayer, VirtualStorage.Instance.Translate("received_from_player", cName, player.CharacterName.Truncate(16)), Color.cyan);
}
}
}