Pawno как сделать команды для админов

Pawno как сделать команды для админов
Pawno как сделать команды для админов
Pawno как сделать команды для админов
Pawno как сделать команды для админов
Pawno как сделать команды для админов

18.04.2016, 20:38 #1

Admin System - админ система со множеством функций

     

Admin System


Это система администрирования, которая имеет массу возможностей и при этом очень простая и понятная в использовании.
Особенности:
Многоуровневая система наблюдения
Панель для админов при клике по игроку на Tab
Общая админ-панель с пунктами в зависимости от уровня
Возможность указывать в одной команде сразу несколько игроков
Сообщения о действиях администрации выводятся только администраторам и указанному игроку
Взаимодействие с RCon (вошедшие в RCon становятся администраторами)
Возможность отмены последней введённой команды
Динамическая панель предполагаемых читеров
Команды:
В некоторые команды вместо параметров можно вводить ключевые слова, например, "/spec off" будет делать тоже самое, что и команда "/specoff".
Также в некоторые команды параметры можно не вводить вообще, тогда команда сработает на того, кто её ввёл.
Команды будут работать на любом cmd процессоре! (кроме rCmd).
/report [текст] - отправить вопрос/жалобу администрации
Уровень 1:
/achat [текст] - Админ чат
/ahelp - Помощь по админ командам
/showstats [id] - Показать статистику игрока
/answer [id] [текст] - Ответить игроку на report
/apanel - Админ-панель со всеми доступными командами
/admins - Посмотреть список администраторов онлайн
/eject [id] - Высадить игрока из транспорта

[Скрыть]


Уровень 2:
/spec [id] - Войти в режим наблюдения за игроком
/spawnveh [id транспорта] - Телепортировать транспорт на респавн
/(un)mute [id] [время] [причина] - Выдать/снять с игрока молчанку
/asay [текст] - Сообщение в формате: "Администратор: [текст]"
/warn [id] [причина] - Выдать предупреждение игроку
/kick [id] [причина] - Выкинуть игрока с сервера
/(un)freeze [id] - Заморозить/разморозить игрока
/slap [id] [причина] - Дать пинка игроку
/goto [id] - Телепортироваться к игроку

[Скрыть]


Уровень 3:
/suspectlist - Список подозреваемых игроков
/gethere [id] - Телепортировать игрока к себе
/gotoveh [id транспорта] - Телепортироваться к транспорту
/ban [id] [причина] - Заблокировать аккаунт игрока
/gmtest [id] - Проверка на бесконечное здоровье
/spawn [id] - Телепортировать игрока на респавн
/unwarn [id] - Снять предупреждение с игрока
/banip [IP] - Блокировка IP-адреса
/cc - Очистка чата

[Скрыть]


Уровень 4:
/sethealth [id] [здоровье] - Выдать здоровье игроку
/setarmour [id] [броня] - Выдать броню игроку
/setmoney [id] [деньги] - Выдать деньги игроку
/setskin [id] [id скина] - Установить скин игроку
/setint [id] [интерьер] - Установить игроку интерьер
/setvw [id] [номер] - Установить игроку виртуальный мир
/giveweapon [id] [оружие] [патроны] - Выдать игроку оружие
/repairveh [id транспорта] - Отремонтировать транспорт
/unbanip [IP] - Разблокировать IP-адрес

[Скрыть]


Уровень 5:
/getall - Телепортировать всех к себе
/setweather [номер] - Установить погоду
/settime [час] - Установить время суток
/destroyveh [id транспорта] - Уничтожить транспорт
/veh [id транспорта] [цвет 1] [цвет 2] - Создать транспорт
/sban [id] - Тихая блокировка
/skick [id] - Тихий кик

[Скрыть]


Функции:
Если вы имеете систему аккаунтов, то некоторые приведённые ниже функции будут вам полезны.
public OnPlayerBan(playerid, gaveid, bool:sban)

PHP код:

Аргументы:
playerid - ID игрока, которому выдали бан
gaveid - ID игрока, который выдал бан
sban - Скрытый ли бан (true) или нет (false)

Этот callback не возвращает каких-либо значений 

public OnPlayerKick(playerid, gaveid, bool:skick)

PHP код:

Аргументы:
playerid - ID игрока, которого кикнули
gaveid - ID игрока, который кикнул
skick - Скрытый ли кик (true) или нет (false)

Этот callback не возвращает каких-либо значений 

public OnPlayerWarn(playerid, gaveid, count)

PHP код:

Аргументы:
playerid - ID игрока, которому выдали предупреждение
gaveid - ID игрока, который выдал предупреждение
count - Количество предупреждений у 'playerid' на данный момент (включая выданный)

Этот callback не возвращает каких-либо значений 

IsPlayerAdminEx(playerid, lvl = 1)

PHP код:

Аргументы:
playerid - ID игрока, у которого хотим проверить админ-права
lvl - Уровень админки, который мы проверяем у игрока (если не указывать, будет равен 1)

Возвращает 1, если игрок имеет уровень админки равный либо больший, чем указано в 'lvl'
Возвращает 0, если игрок не имеет заявленный уровень админки 

GetPlayerAdminLevel(playerid)

PHP код:

Аргументы:
playerid - ID игрока, у которого хотим узнать уровень админки

Возвращает уровень админки указанного игрока 

SetPlayerAdminLevel(playerid, lvl)

PHP код:

Аргументы:
playerid - ID игрока, которому нужно установить уровень админки
lvl - Уровень админки, который нужно установить игроку

Возвращает 1, если всё прошло успешно
Возвращает 0, если указанный игрок не подключен
Возвращает -1, если уровень введён некорректно 

SendMessageToAdmins(lvl, color, const msg[])

PHP код:

Аргументы:
lvl - Уровень админки, с которым админам будет отправлено сообщение
color - Цвет сообщения, которое будет отправлено
msg - Строка с сообщением

Всегда возвращает 1 

GetPlayerMuteTime(playerid)

PHP код:

Аргументы:
playerid - ID игрока, у которого хотим узнать оставшееся время молчанки

Возвращает оставшееся время молчанки для указанного игрока в секундах (0 - молчанки нет) 

SetPlayerMuteTime(playerid, time)

PHP код:

Аргументы:
playerid - ID игрока, которому нужно установить время молчанки
time - Время молчанки (в секундах), которое нужно установить игроку

Возвращает 1, если всё прошло успешно
Возвращает 0, если указанный игрок не подключен
Возвращает -1, если время введено некорректно 

AddPlayerInSuspectList(playerid)

PHP код:

Аргументы:
playerid - ID игрока, которого нужно добавить в список подозреваемых

Возвращает 1, если всё прошло успешно
Возвращает 0, если указанный игрок не подключен 

RemovePlayerFromSuspectList(playerid)

PHP код:

Аргументы:
playerid - ID игрока, которого нужно исключить из списка подозреваемых

Возвращает 1, если всё прошло успешно
Возвращает 0, если указанный игрок не подключен 

UpdateSuspectList()

PHP код:

Возвращает количество исключённых игроков из списка 
Установка и использование:
1. Скачайте admsys.inc по ссылкам ниже и скопируйте в pawno\include
2. Откройте ваш мод и добавьте в начало: "#include <admsys>", скомпилируйте изменённый скрипт
3. По желанию добавьте в загрузку аккаунта выдачу админки при входе всем администраторам
Если вы хотите добавить сохранение админки после выхода игроков, используйте функцию SetPlayerAdminLevel (см. "Функции"), добавив её в загрузку вашего аккаунта и функцию GetPlayerAdminLevel в сохранение.
Если вы хотите добавить какие-либо действия при блокировке, кике или предупреждении, добавьте у себя в моде паблики OnPlayerBan, OnPlayerKick и OnPlayerWarn.
Если же вы хотите, чтобы панель предполагаемых читеров показывала этих самых "предполагаемых читеров", используйте функцию AddPlayerInSuspectList для добавления игрока в список подозреваемых и RemovePlayerFromSuspectList для удаления.
Скачать:
История изменений:
v2.3
Функции SetPlayerAdminLevel и SetPlayerMuteTime теперь возвращают -1, если второй аргумент указан неверно
v2.2
Исправлены возвращаемые значения в некоторых автовызываемых функциях
v2.1
Теперь при слежке за мёртвым игроком вы по-прежнему будете видеть его Очистка чата теперь чистит чат на 30 сообщений Мелкие улучшения
v2.0
Добавлена функция SetPlayerMuteTime Добавлена проверка аргумента уровня админки для функции SetPlayerAdminLevel Исправлены возвращаемые значения в некоторых функциях
v1.9
Теперь администратор может применять наказания к самому себе Добавлен запрет на некоторые действия, если игрок находится в режиме наблюдения
v1.8
Исправлена ошибка с вызовом диалогов
v1.7
Уменьшена вероятность совпадения id'ов диалогов с id'ами из других фс/мода Исправлена ошибка компиляции, возникавшая при попытке использовать это вместе с izcmd
v1.6
Совместимость с y_hooks Совместимость с foreach Мелкие улучшения
v1.5
Добавлена проверка в некоторые команды (нельзя дать варн/кикнуть/забанить админов уровня выше)
v1.4
v1.3
Небольшая оптимизация
v1.2
Команда "/kick" вызывается со 2 уровня админки Добавлена возможность вывода сообщений о действиях администрации всем игрокам
v1.1
Мелкие улучшения
v1.0
Первый релиз
Баги:
На данный момент их не обнаружено. Если вы нашли любой баг - дайте мне знать.
Благодарности:
DeimoS - идеи и предложения
Magic_York, Vitalik_Gonsor, RobertoYork, TheHero, Error4o4 - тестирование
Приятного использования

Последний раз редактировалось Nexius_Tailer; 24.01.2018 в 01:21.

Ответить с цитированием Ответить с цитированием 10 пользователей сказали cпасибо Nexius_Tailer за это полезное сообщение:

-Enot (26.01.2018), Батька (18.04.2016), iWors (28.01.2017), Leex (25.04.2016), Maks_Fender (14.09.2016), Mewtwo (17.05.2016), MrJunior (19.06.2016), TOMATik (19.06.2016), Valera_Kovshikov (09.01.2018), yuriy5022 (20.04.2016)

20.04.2016, 13:26 #2

Жду ваших комментариев)

Ответить с цитированием Ответить с цитированием

20.04.2016, 14:13 #3

В чат можно отправить 144 символа, но писать надо 145 для нуль-смивола. Еще проверки можно делать не вызывая лишних функций

PHP код:

// было
if(!strlen(inputtext))
// стало
if(inputtext[0] != EOS) 
И я немного по другому бы сделал.

PHP код:

// до
admsys_cmd_achat(playerid, params[])
{
    if(IsPlayerAdminEx(playerid))
    {
        if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]");
        new strtmp[144], strname[24];
        GetPlayerName(playerid, strname, sizeof strname);
        format(strtmp, sizeof strtmp, "[Админ чат] %s: %s", strname, params);
        SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
    }
    return 1;
}
// первый вариант
admsys_cmd_achat(playerid, params[])
{
    if(0 == IsPlayerAdminEx(playerid))
        return 1;
    if(admsys_isnull(params)) 
        return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]");
    new str[MAX_CHATBUBBLE_LENGTH+1] = "[Админ чат] ", 
        name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof name);
    strcat(str, name);
    strcat(str, ": ");
    strcat(str, params);
    SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, str);
    return 1;
}
// второй вариант
admsys_cmd_achat(playerid, params[])
{
    if(0 == IsPlayerAdminEx(playerid))
        return 1;
    if(admsys_isnull(params)) 
        return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]");
    new str[MAX_CHATBUBBLE_LENGTH+1];
    GetPlayerName(playerid, str, MAX_PLAYER_NAME);
    format(str, sizeof str, "[Админ чат] %s: %s", str, params);
    SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, str);
    return 1;

Ответить с цитированием Ответить с цитированием 1 пользователь сказал cпасибо Leex за это полезное сообщение:

MrJunior (20.04.2016)

20.04.2016, 16:49 #4

Сообщение от Leex

В чат можно отправить 144 символа, но писать надо 145 для нуль-смивола. Еще проверки можно делать не вызывая лишних функций

Что-то колся, а проверить было лень. Спасибо за информацию

Сообщение от Leex

И я немного по другому бы сделал.

PHP код:

// до
admsys_cmd_achat(playerid, params[])
{
    if(IsPlayerAdminEx(playerid))
    {
        if(admsys_isnull(params)) return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]");
        new strtmp[144], strname[24];
        GetPlayerName(playerid, strname, sizeof strname);
        format(strtmp, sizeof strtmp, "[Админ чат] %s: %s", strname, params);
        SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, strtmp);
    }
    return 1;
}
// первый вариант
admsys_cmd_achat(playerid, params[])
{
    if(0 == IsPlayerAdminEx(playerid))
        return 1;
    if(admsys_isnull(params)) 
        return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]");
    new str[MAX_CHATBUBBLE_LENGTH+1] = "[Админ чат] ", 
        name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof name);
    strcat(str, name);
    strcat(str, ": ");
    strcat(str, params);
    SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, str);
    return 1;
}
// второй вариант
admsys_cmd_achat(playerid, params[])
{
    if(0 == IsPlayerAdminEx(playerid))
        return 1;
    if(admsys_isnull(params)) 
        return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]");
    new str[MAX_CHATBUBBLE_LENGTH+1];
    GetPlayerName(playerid, str, MAX_PLAYER_NAME);
    format(str, sizeof str, "[Админ чат] %s: %s", str, params);
    SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, str);
    return 1;

PHP код:

if(0 == IsPlayerAdminEx(playerid))
        return 1;
    if(admsys_isnull(params)) 
        return SendClientMessage(playerid, ADMSYS_DEFAULT_COLOR, "Используйте: /achat [текст]"); 
Ну это по-сути абсолютно эквивалентно, разве что первое условие читать так сложнее.

PHP код:

    new str[MAX_CHATBUBBLE_LENGTH+1] = "[Админ чат] ", 
        name[MAX_PLAYER_NAME];
    GetPlayerName(playerid, name, sizeof name);
    strcat(str, name);
    strcat(str, ": ");
    strcat(str, params);
    SendMessageToAdmins(1, ADMSYS_DEFAULT_COLOR, str); 
А вот этому я бы предпочёл второй вариант, ибо один формат смотрится гораздо лучше, да и, уверен, работать он будет быстрее, чем несколько strcat. Ответить с цитированием Ответить с цитированием

20.04.2016, 17:44 #5

Не всегда) До 7 strcat может работать быстрее одного format. Надо проверить и выбрать самый быстрый (или красивый :D)

Ответить с цитированием Ответить с цитированием

24.04.2016, 17:19 #6

Сообщение от Nexius_Tailer

да и, уверен, работать он будет быстрее, чем несколько strcat.

strcat работает быстрее (но не всегда, как уже сказали ранее), ибо у format назначение немного иное и там воспроизводится гораздо больше условий для входящего в функцию текста, нежели в strcat. Ответить с цитированием Ответить с цитированием

24.04.2016, 18:06 #7

Сообщение от Eims

strcat работает быстрее (но не всегда, как уже сказали ранее), ибо у format назначение немного иное и там воспроизводится гораздо больше условий для входящего в функцию текста, нежели в strcat.

Уже понял. Просто думал, что большее количество их вызовов будет работать медленнее. Ответить с цитированием Ответить с цитированием

25.04.2016, 15:45 #8

Новая версия v1.1
Изменения:
Мелкие улучшения

Ответить с цитированием Ответить с цитированием

03.06.2016, 19:32 #9

v1.2
Изменения:
Команда "/kick" вызывается со 2 уровня админки
Добавлена возможность вывода сообщений о действиях администрации всем игрокам

Ответить с цитированием Ответить с цитированием

13.06.2016, 16:16 #10

Обновлено: v1.3
Изменения:
Небольшая оптимизация

Ответить с цитированием Ответить с цитированием Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов Pawno как сделать команды для админов

Читать далее:




Как в adobe premiere сделать инверсию




Ежедневник своими руками мастер-класс




Свадебный букет из хризантем и роз своими руками фото




Вырезать открытки на день учителя




Трафарет на стену в комнате своими руками