Скриптер
Проверенный
Участник
Пользователь
- Сообщения
- 198
- Реакции
- 273
- Помог
- 5 раз(а)
DEVCS-2097-23771 (Не утверждено)
Описанная ниже спецификация предоставляет гибкие возможности для разработчиков плагинов.
В данном случае указывается централизованный плагин, который будет оперировать всеми необходимыми данными для плагинов наказаний.
Это позволит:
- избежать дублирования таблиц со схожим функционалом.
- наращивать функционал без изменения исходника центрального плагина (на функционал влияет итерация типов наказаний)
- хранить причины наказаний отдельно от каждого наказания.
Названия методов даны в обобщенном виде, без привязки к конкретному плагину (или его названию) и рекомендованы к написанию именно в таком виде.
Прошу меня поправить, если чего-то не хватает/нужно исправить.
Структуры/enum:
C:
// Результат работы форварда - для определения дальнейшей обработки события
enum
{
PUNISH_CONTINUE = 0,
PUNISH_SUPERCEDE
};
// API ключи для взаимодействия плагинов через punish_get_info/punish_set_info
enum PunishInfo {
PunishInfoType = 0, // Флаги наказания, см. PUNISH_TYPE
PunishInfoReason, // Причина наказания
PunishInfoHiddenReason, // Скрытая причина/причина администратора
PunishInfoTime, // Время наказания в минутах
PunishInfoDate, // Дата/время момента X
PunishInfoPunisher // ID пользователя, который наказал игрока (0 - сервер)
};
// Типы наказаний игрока (см. DEVCS-2097-23829)
enum PUNISH_TYPE {
...
};
Нативы плагина:
C:
/**
* Метод отвечает на вопрос: является ли игрок наказанны.
* @param player_id - номер игрока на сервере
* @param punish_type - тип наказания.
*/
native punish_client_status(player_id, punish_type)
/**
* Метод инициализирует событие бана игрока
* @param player_id - номер игрока на сервере
* @param punish_flags - флаги наказания игрока
*/
naitve punish_client(player_id, punish_flags)
/**
* Метод получает информацию по id игрока и ключу (см. PunishInfo)
* @param player_id - номер игрока на сервере
* @param PunishInfo:info - ключ
* @param any:... - буффер для получения строчных значений
* @return value - числовое значение ключа
*/
native punish_get_info(player_id, PunishInfo:info, any:... );
/**
* Метод задаёт информацию по id игрока и ключу (см. PunishInfo)
* @param player_id - номер игрока на сервере
* @param PunishInfo:info - ключ
* @param any:... - значение ключа (может быть как массив, так и числовое значение
*/
native punish_set_info(player_id, PunishInfo:info, any:... );
События плагина:
C:
/**
* Метод вызывается фактически перед наказанием пользователя
* @param player_id - номер игрока на сервере
* @param punish_type - тип наказания
* @return PUNISH_SUPERCEDE - наказание игрока заблокировано
* PUNISH_CONTINUE - продолжаем наказывать игрока
*/
forward punish_client_punishning(player_id)
/**
* Метод метод вызывается фактически во время наказания, констатируя то, что клиент сейчас будет наказан
* @param player_id - номер игрока на сервере
* @param punish_type - номер игрока на сервере
*/
forward punish_client_punishned(player_id, punish_type)
/**
* Метод вызывается во время подключения игрока на сервер, объявляя начало проверки наказаний
* @param player_id - номер подключающегося игрока
* @param punish_type - тип наказания, который будет проверен
* @return PUNISH_SUPERCEDE - клиент имеет наказание (плагин принял действия)
* PUNISH_CONTINUE - клиент не имеет наказания
*/
forward punish_client_checking(const player_id, const punish_type);
/**
* Метод вызывается после проверки игрока и констатирует результат проверки.
* @param player_id - номер подключающегося игрока
* @param punish_type - тип наказания
* @param bool:status - результат проверки
*/
forward punish_client_checked(const player_id, const punish_type, bool:status);
Последнее редактирование: