-
-
Notifications
You must be signed in to change notification settings - Fork 24
/
Copy pathFemida.cs
129 lines (110 loc) · 5.04 KB
/
Femida.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
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
//Версия 0.1
//Название: Femida
//Описание: Femida - это античит для игры террария предназначенный для администраторов серверов.
// ███████╗███████╗███╗ ███╗██╗██████╗ █████╗
// ██╔════╝██╔════╝████╗ ████║██║██╔══██╗██╔══██╗
// █████╗ █████╗ ██╔████╔██║██║██║ ██║███████║ By WoodMan with <3
// ██╔══╝ ██╔══╝ ██║╚██╔╝██║██║██║ ██║██╔══██║
// ██║ ███████╗██║ ╚═╝ ██║██║██████╔╝██║ ██║
// ╚═╝ ╚══════╝╚═╝ ╚═╝╚═╝╚═════╝ ╚═╝ ╚═╝
// Модули
using System;
using System.Collections.Generic;
using System.Reflection;
using Newtonsoft.Json;
using Terraria;
using TerrariaApi.Server;
using TShockAPI;
using TShockAPI.DB;
namespace Femida
{
[ApiVersion(2, 1)] ////////////////////Версия API 2,1
public class Femida : TerrariaPlugin
{
public Femida(Main game)
: base(game)
{
Order = -4; //////////////////////////// тут -4
}
public override void Initialize()
{
Commands.ChatCommands.Add(new Command("tshock.admin.ban", OfflineBan, "fban")); /////////////////////команды без пробела
}
// public override string Version
// {
//get { return "1.0"; } ////////////////////Такого Нет
// }
public override string Name
{
get { return "Femida"; }
}
public override string Author
{
get { return "woodman"; }
}
public override string Description
{
get { return "Античит для админов серверов в Террарии."; }
}
private static void OfflineBan(CommandArgs args)
{
if (args.Parameters.Count < 1 || args.Parameters[0].ToLower() == "help")
{
args.Player.SendInfoMessage("Syntax: /fban add \"имя\" [reason]");
return;
}
if (args.Parameters[0].ToLower() != "add")
{
#region Команды по-умолчанию
args.Player.SendInfoMessage("Используйте /ban.");
return;
#endregion Команды по-умолчанию
}
if (args.Parameters.Count >= 2)
{
#region Добавить бан
string plStr = args.Parameters[1];
var player = TShock.UserAccounts.GetUserAccountByName(plStr);
if (player == null)
{
args.Player.SendErrorMessage("Пользователь введен неверно!");
return;
}
else
{
string reason = args.Parameters.Count > 2
? String.Join(" ", args.Parameters.GetRange(2, args.Parameters.Count - 2))
: "no reason.";
bool force = !args.Player.RealPlayer;
string adminUserName = args.Player.Name;
adminUserName = String.IsNullOrWhiteSpace(adminUserName) ? args.Player.Name : adminUserName;
if (force || !TShock.Groups.GetGroupByName(player.Group).HasPermission(Permissions.immunetoban ))
{
List<string> KnownIps = JsonConvert.DeserializeObject<List<string>>(player.KnownIps);
string ip = KnownIps[KnownIps.Count - 1];
string uuid = player.UUID;
string playerName = player.Name;
string identf = $"{Identifier.Account}{playerName}";
DateTime expiration = DateTime.MaxValue;
AddBanResult addBanResult = TShock.Bans.InsertBan(identf, reason, playerName, DateTime.UtcNow, expiration);
var players = TShockAPI.TSPlayer.FindByNameOrID(player.Name);
if (players.Count == 1) players[0].Disconnect(string.Format("Забанен!!!: {0}", reason));
Console.WriteLine(string.Format("{0} был наказан администратором {1} по причине: '{2}'", playerName, adminUserName, reason));
string verb = force ? "force-" : "";
if (String.IsNullOrWhiteSpace(adminUserName))
TSPlayer.All.SendInfoMessage((string.Format("игрок {0} был наказан. Причина - '{1}'", playerName, reason.ToLower())));
else
TSPlayer.All.SendInfoMessage(string.Format("{0} был наказан администратором {1} по причине: '{2}'", playerName, adminUserName, reason));
}
else
{
args.Player.SendErrorMessage("Вы не можете забанить другого администратора!");
}
}
return;
#endregion Добавить бан!
}
args.Player.SendInfoMessage("Syntax: /fban add \"name\" [reason]");
}
}
}