• Уважаемый Гость.
    - Прежде чем создать свою тему, пожалуйста, попробуй воспользоваться этим -> ПОИСКОМ !!!
    - После решения Вашего вопроса (проблемы) - нажмите "Лучший ответ", на сообщении, которое его решило. За игнорирование этого действия - Вы получите соответствующее предупреждение. Мы - стараемся Вам помочь. Уделите 10 секунд - чтобы нажать кнопку. (Если у Вас нет такой возможности - укажите в последнем своем сообщении какой ответ Вы считаете лучшим. Наши модераторы сделают это за Вас)
    ЗАПРЕЩЕНО:
    - Cоздавать темы с названиями "Помогите", "Плиз", "Ошибка", "Не могу найти", "Хелп" и тому подобное;
    - Cоздавать темы без детального описания того, что нужно исправить.
    - Cоздавать темы из одного скриншота.
    За игнор правил форума - Ваша тема будет удалена, а Вы получите системное предупреждение.

Почему после перезахода у игрока удаляется бан из таблицы MySQL?

Статус
В этой теме нельзя размещать новые ответы.

Alex_Jemison

Изучающий
Пользователь
Регистрация
13 Апр 2018
Сообщения
202
Лучшие ответы
0
Репутация
0
При выдаче бана аккаунта все хорошо никаких варнингов или ошибок в логах нету. Но после перезахода у игрока удаляется бан из таблицы MySQL 41-4
PHP:
forward OnPlayerCheckBan(playerid);
public OnPlayerCheckBan(playerid)
{
    new rows, seconds, reason[150], admin[24], name[24], string[256];
    cache_get_row_count(rows);
    if(rows)
    {
        cache_get_value_name(0, "Name", name, 24);
        cache_get_value_name(0, "Admin", admin, 24);
        cache_get_value_name(0, "Reason", reason, 150);
        seconds = cache_get_value_name_int(0, "BanTime", seconds);

        new times = gettime();
        new tima[20], dima;
        if(floatround((seconds-times)/60/60/24) > 1)
        {
            tima = "дней";
            dima = floatround((seconds-times)/60/60/24, floatround_ceil);
        }
        else if(floatround((seconds-times)/60/60) > 1)
        {
            tima = "час(ов)";
            dima = floatround((seconds-times)/60/60, floatround_ceil);
        }
        else
        {
            tima = "минут";
            dima = floatround((seconds-times)/60, floatround_ceil);
        }
        if(times < seconds)
        {
            format(string, sizeof(string),
            "Игровой аккаунт: \t%s\n\
            заблокирован на %d %s\n\
            по причине: %s\n\
            адмистратором: %s",
            name, dima, tima, reason, admin);
            ShowPlayerDialog(playerid, 0, DIALOG_STYLE_MSGBOX, !"Аккаунт заблокирован", string, !"", !"Закрыть");
            Kick(playerid);
            return 1;
        }
        else
        {
            format(string, sizeof(string), "DELETE FROM `bans_accounts` WHERE `Name` = '%s' LIMIT 1", GetName(playerid));
            mysql_tquery(mysql, string);
        }
    }
    static const fmt_query[] = "SELECT `Password`, `PINCode`, `Google`, `SettingGoogle`, `LastIP` FROM `accounts` WHERE `Name` ='%s'"; 
    new query[sizeof(fmt_query) +(-2+MAX_PLAYER_NAME)]; 
    format(query, sizeof(query), fmt_query, GetName(playerid)); 
    mysql_tquery(mysql, query, "CheckRegistration", "i", playerid);
    return 1;
}

public OnPlayerConnect(playerid)
{
    SendClientMessage(playerid, COLOR_RED, !"Добро пожаловать на нубо рп 9999999 лвл админки");
    GetPlayerName(playerid,PlayerInfo[playerid][pName],MAX_PLAYER_NAME);

    new string[256];
    format(string, sizeof(string), "SELECT * FROM `bans_accounts` WHERE BINARY `Name` = '%s' LIMIT 1", GetName(playerid)); // Запрос
    mysql_tquery(mysql, string, "OnPlayerCheckBan", "ds", playerid, GetName(playerid));
    return 1;
}
Команда бана:
PHP:
CMD:ban(playerid, params[])
{
    if(PlayerInfo[playerid][pAdmin] < 3) return 1;
    if(ALogged[playerid] !=1) return SendClientMessage(playerid, COLOR_GREY, TEXT_ALOGIN);
    new string[255];
    if(sscanf(params, "uds[150]", params[0], params[1], params[2])) return SendClientMessage(playerid, COLOR_RED, !"Используйте: /ban [ID] [DAY] [REASON]");
    if(GetString(GetName(params[0]),"Benjamin_Rivera")) return 0;
    if(!IsPlayerConnected(params[0])) return 0;
    if(PlayerInfo[playerid][pAdmin] < PlayerInfo[params[0]][pAdmin]) PlayerInfo[playerid][pAdmin] = 0;
    if(strlen(params[3]) > 30) return SendClientMessage(playerid, COLOR_RED, !"Причина не больше 30 символов");
    if(params[1] > 30 || 1 > params[1]) return SendClientMessage(playerid, COLOR_RED, !"Используйте: /ban [ID] [DAY 1-30] [REASON]");
    format(string, sizeof(string), "Администратор %s[%d] забанил аккаунт %s[%d] на %d дней с причиной: %s", GetName(playerid), playerid, GetName(params[0]), params[0], params[1], params[2]);
    SendClientMessageToAll(COLOR_RED, string);
    format(string, sizeof(string), "INSERT INTO `bans_accounts` (`Name`, `Admin`, `BanTime`, `Reason`) VALUE ('%s', '%s', '%d', '%s')", GetName(params[0]), GetName(playerid), gettime()+params[1]*60*60*24, params[2]);
    mysql_tquery(mysql, string);
    Kick(params[0]);
    return 1;
}
 
Последнее редактирование модератором:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу