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)
Отправляет игроку сообщение через систему ответов плагина.
| Параметр | Тип | Описание |
|---|
| player | BasePlayer | Игрок, которому нужно отправить сообщение. |
| message | String | Текст сообщения. |
| customTitle | String | Необязательный заголовок сообщения. |
Пример:
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);
Результат:
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);
Результат:
8.2 Ключ выбранного цвета
C#:
String API_GetSelectedColorKey(UInt64 userId)
Пример:
C#:
String colorKey = nanoChat.Call<String>("API_GetSelectedColorKey", player.userID);
Результат:
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 | Переключить уведомления. |