C#:
using System.Collections.Generic;
using UnityEngine;
namespace Oxide.Plugins {
[Info("InputKeyDetect", "fix by дестерн", "1.0.0")]
public class InputKeyDetect : RustPlugin {
private List<string> keyName = new List<string> {
"home", "delete", "insert", "end", "leftbracket", "rightbracket", "rightarrow", "pageup", "pagedown", "f2", "f3", "uparrow", "downarrow", "leftarrow", "N"
}
;
private List<string> keyLocalize = new List<string> {
"HOME", "DELETE", "INSERT", "END", "X ( левая скобка )", "Ъ ( правая скобка )", "СТРЕЛКА ВПРАВО", "PAGE UP", "PAGE DOWN", "F2", "F3", "СТРЕЛКА ВВЕРХ", "СТРЕЛКА ВНИЗ", "СТРЕЛКА ВЛЕВО", "N"
}
;
private string Permission = "InputKeyDetect.allowed";
private void Init() => permission.RegisterPermission(Permission, this);
private void OnServerInitialized() {
foreach (var player in BasePlayer.activePlayerList) OnPlayerInit(player);
}
private void OnPlayerInit(BasePlayer player) {
for (int i = 0; i < keyName.Count; i++) player.SendConsoleCommand($"bind {keyName[i]} suspkey {keyName[i]}");
}
[ConsoleCommand("suspkey")]
private void cmdOnPress(ConsoleSystem.Arg arg) {
if(arg.connection == null) return;
var player = arg.Player();
var nameKey = arg.Args[0];
bool listedKey = false;
int index = 0;
for (int i = 0; i < keyName.Count; ++i) {
if (keyName[i] == nameKey) {
listedKey = true;
index = i;
break;
}
}
if (!listedKey) return;
DetectMessage("<size=12><color=#ff9f00>" + player.displayName + "</color><color=#bfb2ff> нажал на подозрительную клавишу</color> <color=#ff47a8>" + keyLocalize[index] + "</color></size>");
}
private void DetectMessage(string message) {
foreach (var player in BasePlayer.activePlayerList) {
if(permission.UserHasPermission(player.UserIDString, Permission) || player.IsAdmin()) SendReply(player, message);
}
}
}
}