/
NLObP
/
AAEmu
Обзор
Документация
Войти
/
NLObP
/
AAEmu
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
develop
AAEmu.Game/Scripts/Commands/Online.cs
85 строк
3 KB
ZeromusXYZ
[Game] Replace some List results to Enumerable (#1151)
24 янв 2025, 20:31
Не верифицирован
24 янв 2025, 20:31
cf7012c
Код
Авторство
О чём код?
using System; using System.Linq; using AAEmu.Game.Core.Managers; using AAEmu.Game.Core.Managers.World; using AAEmu.Game.Models.Game; using AAEmu.Game.Models.Game.Char; using AAEmu.Game.Models.Game.Faction; using AAEmu.Game.Utils.Scripts; namespace AAEmu.Game.Scripts.Commands; public class Online : ICommand { public string[] CommandNames { get; set; } = ["online", "list_online"]; public void OnLoad() { CommandManager.Instance.Register(CommandNames, this); } public string GetCommandLineHelp() { return "[filter]"; } public string GetCommandHelpText() { return "Lists the number of online players. If a filter or * is provided, it will be used as a filter to show up to 100 names as well."; } public void Execute(Character character, string[] args, IMessageOutput messageOutput) { var characters = WorldManager.Instance.GetAllCharacters().ToList(); if (args.Length > 0) { var finalMessage = string.Empty; var filter = args[0]; var showCount = 0; foreach (var onlineCharacter in characters) { if (!onlineCharacter.Name.Contains(filter, StringComparison.CurrentCultureIgnoreCase) && filter != "*") { continue; } if (!string.IsNullOrWhiteSpace(finalMessage)) { finalMessage += ", "; } var factionColor = character.Faction.GetRelationState(onlineCharacter.Faction) switch { RelationState.Hostile => "FFFF4444", RelationState.Neutral => "FF888888", RelationState.Friendly => "FF4444FF", _ => "FFFFFFFF" }; if (onlineCharacter.Id == character.Id) { factionColor = "FFFFFFFF"; } finalMessage += $"|c{factionColor}{onlineCharacter.Name}|r"; showCount++; if (showCount > 100) { break; } } messageOutput.SendMessage(finalMessage); CommandManager.SendNormalText(this, messageOutput, showCount != characters.Count ? $"Showing {showCount}/{characters.Count} online players." : $"{characters.Count} players online." ); } else { CommandManager.SendNormalText(this, messageOutput, $"{characters.Count} players online."); } } }