nanoChat

 nanoChat 1.0.0

nanoChat предоставляет API для работы с сообщениями игрока, доступными префиксами, цветами ника/чата и пользовательскими настройками уведомлений.

Через API другие плагины могут:
  • отправлять игроку системные сообщения;
  • получать список доступных префиксов;
  • получать список доступных цветов;
  • получать выбранный префикс или цвет игрока;
  • устанавливать или сбрасывать выбранный префикс/цвет;
  • проверять и переключать настройки личных сообщений и уведомлений.


1. Подключение плагина​

Для вызова API добавьте ссылку на плагин:
C#:
[PluginReference] private Plugin nanoChat;

Перед вызовом API рекомендуется проверять, что плагин загружен:
C#:
if (nanoChat == null)
{
    PrintError("Не найден nanoChat.");
    return;
}

2. Формат данных key/value​

Некоторые методы возвращают JSON-массив объектов:
JSON:
[
  {
    "key": "vip",
    "value": "[VIP]"
  },
  {
    "key": "admin",
    "value": "[ADMIN]"
  }
]

Где:
ПолеОписание
keyВнутренний ключ значения. Используется для установки выбранного префикса или цвета.
valueОтображаемое значение. Например текст префикса или название цвета.

Структура объекта:
C#:
private class DTO_KeyValue
{
    public String key;
    public String value;
}

3. Отправка сообщения игроку​

C#:
void API_SendPlayerMessage(BasePlayer player, String message, String customTitle = null)

Отправляет игроку сообщение через систему ответов плагина.
ПараметрТипОписание
playerBasePlayerИгрок, которому нужно отправить сообщение.
messageStringТекст сообщения.
customTitleStringНеобязательный заголовок сообщения.

Пример:
C#:
nanoChat.Call("API_SendPlayerMessage", player, "Настройки успешно сохранены.");

Пример с заголовком:
C#:
nanoChat.Call("API_SendPlayerMessage", player, "Префикс был изменён.", "Чат");

4. Получение доступных префиксов​

C#:
String API_GetAvailablePrefixes(BasePlayer player)
String API_GetAvailablePrefixes(UInt64 userId)

Возвращает JSON со списком префиксов, доступных игроку.
Метод учитывает права и внутренний кэш доступа игрока.

Пример вызова по игроку:
C#:
String json = nanoChat.Call<String>("API_GetAvailablePrefixes", player);

Пример вызова по SteamID:
C#:
String json = nanoChat.Call<String>("API_GetAvailablePrefixes", player.userID);

Пример результата:
JSON:
[
  {
    "key": "default",
    "value": "[Игрок]"
  },
  {
    "key": "vip",
    "value": "[VIP]"
  }
]

5. Получение доступных цветов​

C#:
String API_GetAvailableColors(BasePlayer player)
String API_GetAvailableColors(UInt64 userId)

Возвращает JSON со списком цветов, доступных игроку.
В отличие от префиксов, в поле value возвращается локализованное название цвета с учётом языка игрока.

Пример:
C#:
String json = nanoChat.Call<String>("API_GetAvailableColors", player);

Пример результата:
JSON:
[
  {
    "key": "red",
    "value": "Красный"
  },
  {
    "key": "blue",
    "value": "Синий"
  }
]

6. Получение выбранного префикса​

C#:
String API_GetSelectedPrefix(BasePlayer player)
String API_GetSelectedPrefix(UInt64 userId)

Возвращает выбранный игроком префикс.
Если префикс не выбран, недоступен или удалён из конфигурации, будет возвращена пустая строка.

Пример:
C#:
String prefix = nanoChat.Call<String>("API_GetSelectedPrefix", player);

Результат:
Код:
[VIP]

7. Получение выбранного цвета​

C#:
String API_GetSelectedColor(BasePlayer player)
String API_GetSelectedColor(UInt64 userId)
String API_GetSelectedColor(UInt64 userId, String langKey = "ru")

Возвращает выбранный игроком цвет.
Метод возвращает не ключ цвета, а его отображаемое название с учётом языка.
Если цвет не выбран, недоступен или удалён из конфигурации, будет возвращена пустая строка.

Пример:
C#:
String colorName = nanoChat.Call<String>("API_GetSelectedColor", player);

Пример с указанием языка:
C#:
String colorName = nanoChat.Call<String>("API_GetSelectedColor", player.userID, "ru");

Результат:
Код:
Красный

8. Получение выбранных ключей​

Эти методы возвращают именно внутренний ключ выбранного значения, а не отображаемый текст.

8.1 Ключ выбранного префикса​

C#:
String API_GetSelectedPrefixKey(UInt64 userId)

Пример:
C#:
String prefixKey = nanoChat.Call<String>("API_GetSelectedPrefixKey", player.userID);

Результат:
Код:
vip

8.2 Ключ выбранного цвета​

C#:
String API_GetSelectedColorKey(UInt64 userId)

Пример:
C#:
String colorKey = nanoChat.Call<String>("API_GetSelectedColorKey", player.userID);

Результат:
Код:
red

9. Установка выбранного префикса​

C#:
Boolean API_SetSelectedPrefixKey(UInt64 userId, String key)

Устанавливает игроку выбранный префикс по ключу.
Возвращает true, если значение было успешно применено.
Возвращает false, если ключ недоступен игроку или не существует.

Пример:
C#:
Boolean success = nanoChat.Call<Boolean>("API_SetSelectedPrefixKey", player.userID, "vip");
if (!success)
{
    PrintWarning("Не удалось установить префикс игроку.");
}

10. Установка выбранного цвета​

C#:
Boolean API_SetSelectedColorKey(UInt64 userId, String key)

Устанавливает игроку выбранный цвет по ключу.

Возвращает true, если значение было успешно применено.
Возвращает false, если ключ недоступен игроку или не существует.

Пример:
C#:
Boolean success = nanoChat.Call<Boolean>("API_SetSelectedColorKey", player.userID, "red");
if (!success)
{
    PrintWarning("Не удалось установить цвет игроку.");
}

11. Сброс выбранного префикса и цвета​

11.1 Сброс префикса​

C#:
Boolean API_ResetSelectedPrefixKey(UInt64 userId)

Сбрасывает выбранный префикс игрока.
C#:
nanoChat.Call<Boolean>("API_ResetSelectedPrefixKey", player.userID);

11.2 Сброс цвета​

C#:
Boolean API_ResetSelectedColorKey(UInt64 userId)

Сбрасывает выбранный цвет игрока.
C#:
nanoChat.Call<Boolean>("API_ResetSelectedColorKey", player.userID);

12. Настройки личных сообщений и уведомлений​

Плагин хранит пользовательские настройки:
  • использует ли игрок личные сообщения;
  • использует ли игрок уведомления.

12.1 Проверка личных сообщений​

C#:
Boolean API_GetUsedPm(UInt64 userId)

Возвращает, включены ли у игрока личные сообщения.
C#:
Boolean isUsedPm = nanoChat.Call<Boolean>("API_GetUsedPm", player.userID);

12.2 Проверка уведомлений​

C#:
Boolean API_GetUsedAlerts(UInt64 userId)

Возвращает, включены ли у игрока уведомления.
C#:
Boolean isUsedAlerts = nanoChat.Call<Boolean>("API_GetUsedAlerts", player.userID);

12.3 Переключение личных сообщений​

C#:
void API_ToggleUsedPm(UInt64 userId)

Переключает состояние личных сообщений игрока.
C#:
nanoChat.Call("API_ToggleUsedPm", player.userID);

12.4 Переключение уведомлений​

C#:
void API_ToggleUsedAlerts(BasePlayer player)

Переключает состояние уведомлений игрока.

Если уведомления включаются, игрок добавляется в кэш языковых подключений.
Если отключаются — удаляется из кэша.
C#:
nanoChat.Call("API_ToggleUsedAlerts", player);

13. Пример получения и чтения доступных префиксов​

C#:
private class ChatKeyValue
{
    public String key;
    public String value;
}

private void Example_GetPrefixes(BasePlayer player)
{
    if (nanoChat == null)
    {
        PrintError("nanoChatне найден.");
        return;
    }

    String json = nanoChat.Call<String>("API_GetAvailablePrefixes", player);

    if (String.IsNullOrWhiteSpace(json))
    {
        SendReply(player, "У вас нет доступных префиксов.");
        return;
    }

    List<ChatKeyValue> prefixes = JsonConvert.DeserializeObject<List<ChatKeyValue>>(json);

    foreach (ChatKeyValue prefix in prefixes)
    {
        Puts($"Ключ: {prefix.key} | Значение: {prefix.value}");
    }
}

14. Пример получения и чтения доступных цветов​

C#:
private class ChatKeyValue
{
    public String key;
    public String value;
}

private void Example_GetColors(BasePlayer player)
{
    if (nanoChat == null)
    {
        PrintError("nanoChat не найден.");
        return;
    }

    String json = nanoChat.Call<String>("API_GetAvailableColors", player);

    if (String.IsNullOrWhiteSpace(json))
    {
        SendReply(player, "У вас нет доступных цветов.");
        return;
    }

    List<ChatKeyValue> colors = JsonConvert.DeserializeObject<List<ChatKeyValue>>(json);

    foreach (ChatKeyValue color in colors)
    {
        Puts($"Ключ: {color.key} | Название: {color.value}");
    }
}

15. Пример установки префикса и цвета​


C#:
private void Example_SetChatStyle(BasePlayer player)
{
    if (nanoChat== null)
    {
        PrintError("nanoChatне найден.");
        return;
    }

    Boolean prefixResult = nanoChat.Call<Boolean>("API_SetSelectedPrefixKey", player.userID, "vip");
    Boolean colorResult = nanoChat.Call<Boolean>("API_SetSelectedColorKey", player.userID, "red");

    if (prefixResult && colorResult)
    {
        nanoChat.Call("API_SendPlayerMessage", player, "Префикс и цвет успешно изменены.", "Чат");
        return;
    }

    nanoChat.Call("API_SendPlayerMessage", player, "Не удалось применить выбранные настройки.", "Чат");
}

16. Краткая таблица API​


МетодНазначение
API_SendPlayerMessageОтправить игроку системное сообщение.
API_GetAvailablePrefixesПолучить доступные игроку префиксы.
API_GetAvailableColorsПолучить доступные игроку цвета.
API_GetSelectedPrefixПолучить выбранный префикс игрока.
API_GetSelectedColorПолучить выбранный цвет игрока.
API_GetSelectedPrefixKeyПолучить ключ выбранного префикса.
API_GetSelectedColorKeyПолучить ключ выбранного цвета.
API_SetSelectedPrefixKeyУстановить выбранный префикс по ключу.
API_SetSelectedColorKeyУстановить выбранный цвет по ключу.
API_ResetSelectedPrefixKeyСбросить выбранный префикс.
API_ResetSelectedColorKeyСбросить выбранный цвет.
GetUsedPmПроверить, включены ли личные сообщения.
GetUsedAlertsПроверить, включены ли уведомления.
ToggleUsedPmПереключить личные сообщения.
ToggleUsedAlertsПереключить уведомления.
Назад
Сверху Снизу