Admin Load

amxx Admin Load 3.11

Нет прав для скачивания
Установка
  1. Скопируйте файлы adminload.inc в директорию: amxmodx/scripting/include/
  2. Скомпилируйте плагин (инструкция).
  3. Если не используете FreshBans настройте CVAR-ы в sql.cfg
  4. Скопируйте скомпилированный файл adminload.amxx в директорию: amxmodx/plugins/
  5. Пропишите adminload.amxx в файле /amxmodx/configs/plugins.ini (Желательно вверху)
  6. Отключить все плагины которые загружают админов
  7. Скопируйте словарь плагина timeleft.txt в директорию amxmodx/data/lang/
Настройки
Настройки вносить в файл /addons/amxmodx/configs/amxx.cfg

Код:

// Адрес игрового сервера. Формат записи "127.0.0.1:27015"
// Если пустое значение, адрес будет определен автоматически
// Можно указывать только IP без порта. Тогда порт будет 27015
adminload_server_address ""

// Источник данных
// 0 - с файла users.ini
// 1 - с базы
// 2 - гибридная загрузка (сначала грузит с базы, потом с файла)
// 3 - с бэкапа
// 4 - с бэкапа, позже с базы
// 5 - с бэкапа, позже с базы, позже с файла
adminload_load_type 5

// Интервал в часах между повторными бэкапами базы
// Если равен 0, то архивация будет выполняться после каждой смены карты
// При значении -1 бэкап users.ini делается после выполнения команды amx_reloadadmins
// При значении 24 бэкап users.ini делается каждые 24 часа
adminload_backup_timecheck 24

// Способ ведения логов
// 0 - обычное логирование AMXX
// 1 - в каталог logs/adminload/ отдельным файлом)
adminload_log_type 0

// Флаг который будет выдан HLTV
adminload_hltv_access "a"

// Флаг который будет выдан ботам
adminload_bot_access "a"


Формат файла users.ini
Код:

"<name|ip|steamid>" "<password>" "<access flags>" "<account flags>" <static bantime> <expired> "<nickname>"
; nickname - никнейм админа
; ip - ip админа
; steamid - steamid админа
; password - пароль админа
; access flags - флаги админа
; account flags - флаги типа админки
; static bantime - 1 или 0. Может ли админ выбирать время бана ( для фрешбанс не имеет значения )
; expired - время когда истекает админка в формате 01.01.2017 или 0 если никогда
; Если у админки закончился срок действия, то плагин просто не будет читать эту строку
; Поля nickname, static bantime, nickname не обязательны
; Если пароль пустой, то укажите просто ""
; Если вам надо, чтобы админ, прописанные по SteamID или ip играл только под одним ником (например maksim),
; то нужно прописать в account flags дополнительный флаг l ( буква L ), написать нужно букву L - маленькую ( l )
; Например:
; "STEAM_0:0:123456" "" "t" "el" "0" "01.01.2017" "maksim"
; Остальные примеры
"STEAM_0:0:123456" "" "t" "ce" "1" "01.01.2017"
"maksim" "12345" "abcdefghijklmnopqrstu" "a" "0" "0"
API
Пример использования API для показа количество оставшихся дней в menufront

Ищем функцию
displayMenu(id, pos)
Меняем
Код:

new len = format(menuBody, 511,
g_coloredMenus ? "\yAMX Mod X Menu\R%d/%d^n\w^n" : "AMX Mod X Menu %d/%d^n^n" , pos + 1, (g_menusNumber / MENUITEMSPERPAGE) + (((g_menusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0))

На
Код:

new exp = adminload_get_daysleft(id)
new left[32]
if (exp == 0) {
format(left, 31, "Бессрочная")
} else {
num_to_str(exp, left, 31)
}

new len = format(menuBody, charsmax(menuBody),

g_coloredMenus ? "\yМеню админа\R%d/%d^nАдминка истекает через, дн.: %s^n\w^n" : "Меню админа %d/%d^nАдминка истекает через, дн: %s.^n^n" , pos + 1, (g_menusNumber / MENUITEMSPERPAGE) + (((g_menusNumber % MENUITEMSPERPAGE) > 0) ? 1 : 0), left)

Меняем
Код:

show_menu(id, keys, menuBody)

На
Код:

show_menu(id, keys, menuBody, -1, "AMXMODXMENU")

Ищем ближе к концу файла строчку
Код:

register_menucmd(register_menuid("AMX Mod X Menu"), 1023, "actionMenu")

И заменяем на
Код:

register_menucmd(register_menuid("AMXMODXMENU"), 1023, "actionMenu")

Также добавляем в начало файла после #include <amxmisc>
Код:

#include <adminload>

Копируем файл adminload.inc в папку scripting/include и компилируем файл. Заменяем оригинальный (перед этим сделайте бэкап). После чего меняем карту или перезагружаем сервер


Дополнение:
Сделал для показа админам include, который показывает количество времени (секунды, минуты, дни, недели, месяцы, года) со склонением по падежам включая более или менее.

Например: До окончания админки осталось менее месяца. Или: До окончания админки осталось более 2 лет. Или же: До окончания админки осталось 2 дня.

Пример использования
Код:
register_dictionary("timeleft.txt");
new type, status, title[32];
new timeleft = timeleft_get_timeleft(1474377406 - get_systime(), TIMELEFT_AUTO, type, status);
timeleft_format_timeleft(timeleft, type, status, title, charsmax(title));

server_print("^t До окончания админки осталось %s", title);
Сверху Снизу