Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

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

Сен
226
127
Активный
Всем привет, команда для отправки в общий чат, с помощью админки. Если вдруг у Вас будут ерроры, пишите под тему, помогу.
Если у Вас заготовлено все в моде, все стоки, и Вы просто ищете команду, то берите просто саму команду, и все, а может Вам и понадобится какой то сток.
Команда: /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
}
 
Сверху