C#:
using System;
using System.Linq;
using System.Collections.Generic;
using Oxide.Core;
using Oxide.Core.Plugins;
using UnityEngine;
using Newtonsoft.Json;
namespace Oxide.Plugins {
[Info("AfkKick", "Nimant", "1.0.1")]
class AfkKick : RustPlugin {
private string FITRJJGdeoKMKgS = "afkkick.bypass";
private Dictionary<ulong, KfcGZDeFwLXqE> vBMkGDSXiHmKhmkRWner = new Dictionary<ulong, KfcGZDeFwLXqE>();
private class KfcGZDeFwLXqE {
public Vector3 cEepiyhyrNQyloCHddVZoXxDyZrqUU;
public int SrWvdYFwxyeEWwIzAVGbhubLtwvJV;
}
private void Init() {
permission.RegisterPermission(FITRJJGdeoKMKgS, this);
zOPBcQgCfCaFgv();
LoadDefaultMessages();
}
private void OnServerInitialized() => timer.Once(5f, ()=> XvcAEqQSsTQcJuXsWqwVZN());
private bool iNDrRVDXMbItjloRxarxPMHX(BasePlayer player) => player != null && (player.IsAdmin || permission.UserHasGroup(player.UserIDString, FITRJJGdeoKMKgS));
private void XvcAEqQSsTQcJuXsWqwVZN() {
foreach(var player in BasePlayer.activePlayerList.Where(x=> !iNDrRVDXMbItjloRxarxPMHX(x)).ToList()) {
if (player == null) continue;
var cEepiyhyrNQyloCHddVZoXxDyZrqUU = new Vector3((float)Math.Truncate(player.transform.position.x), (float)Math.Truncate(player.transform.position.y), (float)Math.Truncate(player.transform.position.z));
if (!vBMkGDSXiHmKhmkRWner.ContainsKey(player.userID)) vBMkGDSXiHmKhmkRWner.Add(player.userID, new KfcGZDeFwLXqE() {
cEepiyhyrNQyloCHddVZoXxDyZrqUU = cEepiyhyrNQyloCHddVZoXxDyZrqUU, SrWvdYFwxyeEWwIzAVGbhubLtwvJV = 0
}
);
else {
if (cEepiyhyrNQyloCHddVZoXxDyZrqUU == vBMkGDSXiHmKhmkRWner[player.userID].cEepiyhyrNQyloCHddVZoXxDyZrqUU && player.inventory.crafting.queue.Count==0) {
if (vBMkGDSXiHmKhmkRWner[player.userID].SrWvdYFwxyeEWwIzAVGbhubLtwvJV >= kzDZLdvlXvASyoeaGqiRCaQbjmZbmV.GTJrJuFhDQCb) {
vBMkGDSXiHmKhmkRWner[player.userID].SrWvdYFwxyeEWwIzAVGbhubLtwvJV = 0;
player.Kick(BTiaiNtmtqORCYBxmFunysQvc("KICK.INFO"));
}
else vBMkGDSXiHmKhmkRWner[player.userID].SrWvdYFwxyeEWwIzAVGbhubLtwvJV += kzDZLdvlXvASyoeaGqiRCaQbjmZbmV.wbfTEjcSVrnEIXfKTGZLhfDxIReNf;
}
else {
vBMkGDSXiHmKhmkRWner[player.userID].cEepiyhyrNQyloCHddVZoXxDyZrqUU = cEepiyhyrNQyloCHddVZoXxDyZrqUU;
vBMkGDSXiHmKhmkRWner[player.userID].SrWvdYFwxyeEWwIzAVGbhubLtwvJV = 0;
}
}
}
timer.Once(kzDZLdvlXvASyoeaGqiRCaQbjmZbmV.wbfTEjcSVrnEIXfKTGZLhfDxIReNf, XvcAEqQSsTQcJuXsWqwVZN);
}
private void LoadDefaultMessages() {
lang.RegisterMessages(new Dictionary<string, string> {
{
"KICK.INFO", "Вы были кикнуты, т.к.были слишком долго AFK"
}
}
, this);
}
private string BTiaiNtmtqORCYBxmFunysQvc(string key, string steamID = null) => lang.GetMessage(key, this, steamID);
private DNFsSjWLoNOkZpIFBGdDbmYg kzDZLdvlXvASyoeaGqiRCaQbjmZbmV;
private class DNFsSjWLoNOkZpIFBGdDbmYg {
[JsonProperty(PropertyName = "Частота опроса игроков в секундах")]
public int wbfTEjcSVrnEIXfKTGZLhfDxIReNf;
[JsonProperty(PropertyName = "Через сколько секунд бездействия кикать игроков")]
public int GTJrJuFhDQCb;
}
private void zOPBcQgCfCaFgv() => kzDZLdvlXvASyoeaGqiRCaQbjmZbmV = Config.ReadObject<DNFsSjWLoNOkZpIFBGdDbmYg>();
protected override void LoadDefaultConfig() {
kzDZLdvlXvASyoeaGqiRCaQbjmZbmV = new DNFsSjWLoNOkZpIFBGdDbmYg {
wbfTEjcSVrnEIXfKTGZLhfDxIReNf = 60, GTJrJuFhDQCb = 600
}
;
nuHbbmLNdANQtdGFGOWzaDPPrd(kzDZLdvlXvASyoeaGqiRCaQbjmZbmV);
timer.Once(0.1f, ()=>nuHbbmLNdANQtdGFGOWzaDPPrd(kzDZLdvlXvASyoeaGqiRCaQbjmZbmV));
}
private void nuHbbmLNdANQtdGFGOWzaDPPrd(DNFsSjWLoNOkZpIFBGdDbmYg config) => Config.WriteObject(config, true);
}
}