This is what i used hope this can get you closer to your goal:::::
using System.Text;
[Command("playerlist")]
private void plCommand(IPlayer iplayer, string command, string[] args)
{
var player = iplayer.Object as BasePlayer;
StringBuilder stringBuilder = new StringBuilder();
var count = 1;
foreach (var p in BasePlayer.activePlayerList)
{
if(p.net.connection.authLevel == 2)
{
stringBuilder.AppendLine($"{count}: <color=purple>(OWNER)</color> <color=green>{p.displayName}</color>");
count++;
}
else
{
if (p.net.connection.authLevel == 1)
{
stringBuilder.AppendLine($"{count}: <color=purple>(ADMIN)</color> <color=green>{p.displayName}</color>");
count++;
}
else
{
if (p.IPlayer.BelongsToGroup("")) //if you have mod groups
{
stringBuilder.AppendLine($"{count}: <color=purple>(MOD)</color> <color=green>{p.displayName}</color>");
count++;
}
else
{
stringBuilder.AppendLine($"{count}: <color=green>{p.displayName}</color>");
count++;
}
}
}
}
PrintPluginMessageToChat(player, stringBuilder.ToString());
}
it outputs to chat list of all active players
so you could use BasePlayer.FindAwakeOrSleeping() to get all players or BasePlayer.allPlayerList
Edit : If you use RustAdmin , dont use [Command("playerlist")]
bc RustAdmin uses that in console for there list and then breaks RustAdmin's Playerlist.
so rather use [Command("players")]
Merged post private void PrintPluginMessageToChat(BasePlayer player, string message)
{
player.ChatMessage("<b><size=16>[<color=#ffa500ff>" + this.Name + "</color>]</size></b>\n" + message);
}
forgot this is my method to print to chat