modernuo/Projects/UOContent/Network/NetworkCommands.cs
Kamron Batman fffda53263
fix: Adds command help, webpage, and fixes issues with other commands (#1669)
### Summary

- Fixes `[AdvancedSearch` being accessible by players 😱 
- Adds `[GenCommands` to generate the same commands html page on https://muo.gg/commands.
- Fixes `[helpinfo` so all commands properly show up!

> [!WARNING]  
> ### Developer Warning:
> Commands must now be registered in the `Configure` bootup phase.
> If a command is not registered early enough, it may not be available to systems like [helpinfo
> that cache their information.

> [!NOTE]  
> ### Developer Note:
> Various commands related to generating content have been changed to _Developer_ and above access level.

### Screenshots
<img width="673" alt="image" src="https://github.com/modernuo/ModernUO/assets/3953314/b105b5c9-5eb4-4ace-93ff-1bfb31e7132f">

<img width="547" alt="image" src="https://github.com/modernuo/ModernUO/assets/3953314/e97487e8-47a5-4aa7-89cc-9fe3deda584d">
2024-02-10 00:19:19 -08:00

60 lines
1.9 KiB
C#

using Server.Commands;
using Server.Commands.Generic;
using Server.Mobiles;
namespace Server.Network
{
public class PacketLoggingCommand : BaseCommand
{
public static void Configure()
{
TargetCommands.Register(new PacketLoggingCommand());
}
public PacketLoggingCommand()
{
AccessLevel = AccessLevel.Developer;
Commands = new[] { "PacketLogging" };
ObjectTypes = ObjectTypes.Mobiles;
Supports = CommandSupport.AllMobiles;
Usage = "PacketLogging <on|off>";
Description = "Enables or disables packet logging for a particular user until they disconnect.";
}
public override void Execute(CommandEventArgs e, object targeted)
{
if (e.Arguments.Length == 0)
{
LogFailure("Format: PacketLogging <on|off>");
return;
}
var from = e.Mobile;
var enable = Utility.ToBoolean(e.Arguments[0]);
if (targeted is not PlayerMobile pm)
{
LogFailure("That is not a player.");
}
else if (pm.NetState == null)
{
LogFailure("The player is not connected.");
}
else if (from != pm && from.AccessLevel < pm.AccessLevel)
{
LogFailure("You do not have the required access level to do this.");
}
else
{
pm.NetState.PacketLogging = enable;
var enabled = enable ? "enabled" : "disabled";
CommandLogging.WriteLine(
from,
$"{from.AccessLevel} {CommandLogging.Format(from)} {enabled} packet logging for {pm.Account.Username} ({pm.NetState})"
);
AddResponse($"Packet logging has been {enabled} for {pm.Account.Username} ({pm.NetState})");
}
}
}
}