Для улучшения предложенного кода мы можем внести несколько изменений, чтобы сделать его более гибким и удобным для настройки. Основные улучшения касаются обработки конфигурационного файла и реализации механизма очистки статистики игроков. Также мы можем добавить логику для автоматической загрузки и сохранения конфигурации, а также улучшить модульность кода.Улучши код
C#:
using Newtonsoft.Json;
using Oxide.Core;
using Oxide.Core.Plugins;
using System.Collections.Generic;
namespace Oxide.Plugins
{
[Info("PlayerStatsWiper", "YourName", "1.0.2")]
public class PlayerStatsWiper : RustPlugin
{
private PluginConfig config;
private class PluginConfig
{
[JsonProperty(PropertyName = "Clear stats on wipe")]
public bool ClearStatsOnWipe { get; set; } = true;
public static PluginConfig DefaultConfig()
{
return new PluginConfig();
}
}
protected override void LoadDefaultConfig()
{
config = PluginConfig.DefaultConfig();
}
protected override void LoadConfig()
{
base.LoadConfig();
try
{
config = Config.ReadObject<PluginConfig>();
if (config == null) throw new JsonException();
}
catch
{
PrintWarning("Failed to load config, creating new default config.");
LoadDefaultConfig();
}
}
protected override void SaveConfig() => Config.WriteObject(config);
void Init()
{
LoadConfig();
}
// Пример функции для очистки статистики игроков
private void ClearPlayerStats()
{
if (!config.ClearStatsOnWipe)
{
Puts("Очистка статистики игроков отключена через конфигурацию.");
return;
}
// Здесь должна быть реализация логики очистки статистики
Puts("Очистка статистики игроков...");
// Предположим, что функция реализована здесь
}
// Пример функции, которая могла бы вызываться при событии вайпа
void OnServerWipe()
{
ClearPlayerStats();
}
// Остальной код плагина
}
}
В этой версии кода:
1. Улучшена обработка конфигурационного файла. Используется попытка чтения конфигурации с обработкой исключений, чтобы предотвратить возможные ошибки при неправильном формате конфигурационного файла. В случае ошибки загружается конфигурация по умолчанию.
2. Уточнены настройки JSON для конфигурации. Использование
JsonProperty
позволяет точнее контролировать сериализацию и десериализацию, а также делает код более читабельным.3. Оптимизирована структура конфигурации. Упрощена работа с конфигурацией и обеспечена легкая расширяемость.
4. Добавлена логика проверки настроек перед очисткой статистики. Теперь функция
ClearPlayerStats
сама проверяет, включена ли функциональность очистки статистики в конфигурации, что уменьшает вероятность её случайного вызова.5. Модульность и читаемость кода. Структура кода теперь более модульная и легкая для понимания, что упрощает дальнейшее расширение функциональности плагина.