C#:
using System.Collections.Generic;
using System.Linq;
namespace Oxide.Plugins
{
[Info(plugininfor.Title, plugininfor.Author, plugininfor.Version)]
[Description(plugininfor.Description)]
class OnlinePlus : RustPlugin
{
private static class plugininfor
{
internal const string Author = "setfps"; internal const string Title = "OnlinePlus"; internal const string Version = "1.0.0"; internal const string Description = "Отображение онлайна сервера (КАСТОМНОЕ)";
}
#region Perms
const string permfromuse = "perm.fromuse";
const string moderperm = "perm.moder";
#endregion
void OnServerInitialized()
{
PrintWarning("Плагин успешно загружен. skyplugins.ru (by setfps)");
lang.RegisterMessages(Messages, this, "ru");
Messages = lang.GetMessages("ru", this);
}
void Init()
{
permission.RegisterPermission(permfromuse, this);
permission.RegisterPermission(moderperm, this);
}
[ChatCommand("online")]
void online(BasePlayer player)
{
var admins = BasePlayer.activePlayerList.Count(p => p.IsAdmin);
var kolvo = BasePlayer.activePlayerList.Count;
var moders = BasePlayer.activePlayerList.Count(p => permission.UserHasGroup(p.UserIDString, moderperm));
if (!permission.UserHasPermission(player.UserIDString, permfromuse) && !player.IsAdmin)
{
SendReply(player, Messages["noPerm"]);
Effect.server.Run("assets/prefabs/locks/keypad/effects/lock.code.denied.prefab",
player.GetNetworkPosition());
return;
}
PrintToChat(player, $"Сейчас на сервере {kolvo} игроков, {moders} модераторов, {admins} администраторов.");
}
[ChatCommand("players")]
void player(BasePlayer player)
{
if (!permission.UserHasPermission(player.UserIDString, permfromuse) && !player.IsAdmin)
{
SendReply(player, Messages["noPerm"]);
Effect.server.Run("assets/prefabs/locks/keypad/effects/lock.code.denied.prefab",
player.GetNetworkPosition());
return;
}
string plist = "";
var players = BasePlayer.activePlayerList.Count;
if (players == 0)
{
plist += "Игроков щас нет в сети";
}
else
{
foreach (BasePlayer p in BasePlayer.activePlayerList)
{
if (BasePlayer.activePlayerList.Count == 1)
{
plist += $"Вы на сервере один\n— {p.displayName} ({p.UserIDString})";
}
else
{
plist += $"{p.displayName} ({p.UserIDString})\n";
}
}
InChat(player, Messages["players"], players, plist);
}
}
private void InChat(BasePlayer player, string msgId, params object[] args)
{
PrintToChat(player, lang.GetMessage(msgId, this, player.UserIDString), args);
}
private string GetLangValue(string key, string userId) => lang.GetMessage(key, this, userId);
private Dictionary<string, string> Messages = new Dictionary<string, string>()
{
{"noPerm", "Недостаточно прав."},
{"players", "Список Игроков ({0}):\n{1}"},
};
}
}