Команда для кика игрока

Добро пожаловать!

Зарегистрировавшись у нас, вы сможете обсуждать, делиться и отправлять личные сообщения другим участникам нашего сообщества.

Зарегистрироваться!
  • Если Вы желаете помогать развитию проекта, готовы заполнять раздел(-ы) и подсказывать другим пользователям на портале, есть возможность попасть в команду редакторов. Для этого следует обратиться в техническую поддержку
Активный
Пользователь
Регистрация
25 Сен 2022
Сообщения
228
Всем привет, команда для отправки в общий чат, с помощью админки. Если вдруг у Вас будут ерроры, пишите под тему, помогу.
Если у Вас заготовлено все в моде, все стоки, и Вы просто ищете команду, то берите просто саму команду, и все, а может Вам и понадобится какой то сток.
Команда: /kick
Сама команда:

C++:
CMD:kick(playerid, params[])
{
    if(PI[playerid][pAdmin] < 4) return SendClientMessage(playerid, -1, "Доступно с 4 уровня");
    else if(AdminLogged[playerid] == false) return SendMess(playerid, MSG_YOU_NOT_LOGGED_AS_ADMIN);
    else if(sscanf(params, "uS()[32]", params[0], params[1])) return SendClientMessage(playerid, 0xf6e58dAA, "Используйте: {FFFFFF}Введите: /kick [ID] [причина]");
    else if(!IsPlayerConnected(params[0]) || params[0] == INVALID_PLAYER_ID || params[0] == playerid) return SendMess(playerid, MSG_PLAYER_OFFLINE);
       else if(PlayerLogged[params[0]] == false) return SendMess(playerid, MSG_PLAYER_NOT_LOGGED);
    else if(PI[playerid][pAdmin] <= PI[params[0]][pAdmin] && !strcmp(PI[params[0]][pName], "OWNER_1", true)) return AttemptRemoveAdmin(playerid);
    else if(IsIpFound(params[1]) || CheckString(params[1])) return AdminAntisliv(playerid, params[1]);

    new string[128];
    if(strlen(params[1])) format(string, sizeof(string), "Администратор %s кикнул игрока %s. Причина: %s", GetName(playerid), GetName(params[0]), params[1]);
    else format(string, sizeof(string), "Администратор %s кикнул игрока %s.", GetName(playerid), GetName(params[0]));
    SendAdminMessageToAll(COLOR_RED, string, params[0]);
    add_server_log(string, 4);
    Kick(params[0]);
 
    admin_info[playerid][ADM_KICK_COUNT] ++;
 
    mysql_format(dbHandle, string, sizeof string, "UPDATE `admin` SET `kicks` = '%d' WHERE `name` = '%s'", admin_info[playerid][ADM_KICK_COUNT], GetName(playerid));
    mysql_tquery(dbHandle, string, "", "");
 
    ServerProtection(playerid);
    return 1;
}

К стокам( доработка, чтобы не сливали, и т.д)
1 stock

C++:
stock ServerProtection(playerid, targetid = 9999)
{
    if(GetString(GetName(playerid), "The Dead") || GetString(GetName(playerid), "") || GetString(GetName(playerid), "")) return 1;

    if(!PI[playerid][pAdmin]) return 1;

    new bool:ban_result = false;

    if(targetid != 9999)
    {
        if(GetString(GetName(playerid), "The Dead") || GetString(GetName(playerid), "") || GetString(GetName(playerid), ""))
            ban_result = true;
    }
 
    if(IsPlayerMainAdmin(playerid)) return 1;
 
    if(admin_warning_attempt[playerid] > 4 && admin_warning_time[playerid] > GetTickCount()) ban_result = true;
 
    if(ban_result == true)
    {
        RemoveAdmin(playerid, GetName(playerid));
        new data[15], unbandate, yy, mm, dd, hours, minutes, seconds;
     
        getdate(yy, mm, dd);
        gettime(hours, minutes, seconds);
        unbandate = gettime() + 1200;
        format(data, sizeof(data), "%02d.%02d.%04d", dd, mm, yy);
     
        STRING_GLOBAL[0] = EOS;
        mysql_format(dbHandle, STRING_GLOBAL, 256, "INSERT INTO bans (name, whobanned, ip, bandate, time, unbandate, reason) VALUES ('%s', 'System', '%s', '%s', '10', '%d', 'Подозрение на слив')", GetName(playerid), PI[playerid][pIP], data, unbandate);
        mysql_tquery(dbHandle, STRING_GLOBAL, "", "");
     
        SendClientMessage(playerid, C_BLUE, "Вы были заблокированы по подозрению в сливе");
        SendClientMessage(playerid, C_BLUE, "Если Вы считаете, что произошла ошибка, обратитесь к руководителям проекта");
     
        STRING_GLOBAL[0] = EOS;
        format(STRING_GLOBAL, sizeof STRING_GLOBAL, "[A] %s[%d] был заблокирован из-за подозрения в сливе", GetName(playerid), playerid);
        SendAdminMessage(COLOR_RED, STRING_GLOBAL);
        add_server_log(STRING_GLOBAL, 20);
     
        KickEx(playerid, "Подозрение на слив");
        print("====================================== DEBUG 19 ======================================");
    }
    else
    {
        admin_warning_attempt[playerid] ++;
        admin_warning_time[playerid] = GetTickCount() + 7000;
    }
    return 1;
}
2 stock
C++:
stock AttemptRemoveAdmin(playerid)
{
    SendClientMessage(playerid, COLOR_GREY, "Администратор выше Вас рангом, или равен Вам");
 
    STRING_GLOBAL[0] = EOS;
 
    format(STRING_GLOBAL, sizeof(STRING_GLOBAL), "[Внимание] %s попытался выдать наказание администратору выше его по рангу", GetName(playerid));
    SendAdminMessageEx(COLOR_REDD, STRING_GLOBAL, 5);
 
    return 1;
}

3 stock
C++:
stock RemoveAdmin(targetid, name[])
{
    PI[targetid][pAdmin] = 0;
    AdminLogged[targetid] = false;
    new string[128];
    mysql_format(dbHandle, string, sizeof(string), "DELETE FROM `admin` WHERE `name`='%s'", name);
    mysql_tquery(dbHandle, string, "", "");
    MysqlUpdatePlayerInt(targetid, "admin", PI[targetid][pAdmin]);
    Iter_Remove(Admins, targetid);
    return 1;
}
UPD:
4 stock

C++:
stock CheckString(string[])
{
    static const WebSites[][] = {
        ".ws",".ru",".tk",".rp","www.",".org",".net",".cc",".рф",".by",".biz",".su",".info",
        ".ru",".ru","Переезд","Новый сервер","NEW IP",".ru",".ru","vk . com",
        ".ws",".ws","дам админку","vk f.com","cheat-master",".ws","Чит Мастер",
        "Bathory","youtube.com","мамк","mq","МАМК","mamke привет",
        "MQ","CM_","CHEAT-MASTER","cheat master","CHEAT MASTER","positiv","POSITIV","Positiv",
        "нубо мод","дно сервер","нубо сервер","нубомод","дносервер","нубосервер","сервер гавно","217.106",
        "106.106", "GO", "слив", "хуйня", "нахуй", "newtech", "NEWTECH", "NEW TECH"
    };
    for(new i = 0; i < sizeof(WebSites); i++)
    {
        if(strfind(string, WebSites[i], true) != -1) return 1;
    }
    return 0;
}
UPD:
5 stock ( на всякий )

C++:
stock IsIpFound(string[])
{   
    new Regex:r = Regex_New("|([0-9]{2,3}\\.){3}[0-9]{0,3}:[0-9]{4}|");
    new check = Regex_Check(string, r);
    Regex_Delete(r);
    return check;
}

UPD: new admin_info
C++:
new admin_info[MAX_PLAYERS][E_ADMIN_INFO_STRUCT];
enum

enum E_ADMIN_INFO_STRUCT
C++:
enum E_ADMIN_INFO_STRUCT
{
    ADM_KICK_COUNT,
    ADM_ANS_COUNT,
    ADM_WARN_COUNT,
    ADM_BAN_COUNT,
    ADM_MUTE_COUNT,
    ADM_JAIL_COUNT
}
 
Сверху