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

Почему при бане игрока выдаёт неверную дату разбана

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

Evgesha2021

Умник
При "Бане" игрока, выдаёт неверную "Дату Разбана"! У кого есть какие-либо варианты решения данной проблемы?
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Чтобы видеть скрытое содержание Зарегистрируйтесь на форуме!
Код команды /ban:
PHP:
CMD:ban(playerid, params[])
{
    if(User[playerid][pAdmin] < 2 || !GetPVarInt(playerid, "Dostup")) return true;
    if(User[playerid][pVzlom] == 1) return SCM(playerid, COLOR_LIGHTBLUE, "[Информация]: {AFAFAF}Вам не доступна данная функция т.к. ваш аккаунт подозреваеться во взломе!");
    if(Spectate[playerid]) StopSpectate(playerid);
    if(sscanf(params, "u[128]ds[60]",params[0],params[1],params[2])) return SendClientMessage(playerid, COLOR_GREY, "Используйте: /ban [id/ник] [кол-во дней] [причина]");
    if(!IsPlayerConnected(params[0])) return SendClientMessage(playerid, COLOR_GREY, "Игрок оффлайн!");
    if(params[1] < 1 || params[1] > 3001) return SendClientMessage(playerid, COLOR_GREY, "Кол-во дней от 1 до 3000");
    User[params[0]][pBan] = getdate()+params[1];
    new ip[15];
    new day, month, year;
    new null = params[1];
    getdate(year, month, day);
    if(User[params[0]][pAdmin] && User[playerid][pAdmin] < 6) return BanAdmin(playerid);
    format(YCMDstr, sizeof(YCMDstr), "Администратор: %s забанил %s на %i дней. Причина: %s ",User[playerid][pName],User[params[0]][pName],params[1],params[2]);
    SendClientMessageToAll(COLOR_LIGHTRED,YCMDstr);
    GetPlayerIp(params[0],ip,sizeof(ip));
    format(YCMDstr, sizeof(YCMDstr), "Ник [%s]  R-IP [%s]  L-IP [%s]  IP [%s]",User[params[0]][pName],User[params[0]][pIpReg],User[params[0]][pvIp],ip);
    ABroadCast(COLOR_LIGHTRED,YCMDstr,2);
    mysql_format(dbHandle,QUERY, 300, "INSERT INTO `ban` (`Text`, `Name`, `NameAdmin`, `Date`, `Unban`) VALUES ('%s', '%s', '%s', '%i/%02i/%02i', '%i')",params[2],User[params[0]][pName],User[playerid][pName],day,month,year, mktime(5,0,0,day+null,month,year));
    mysql_tquery(dbHandle,QUERY,"","");
    KickEx(params[0], "Ban Admin");
    AdminInfo[playerid][admBaned]++;
    YCMDstr[0] = EOS;
    format(YCMDstr, 200, "UPDATE admin SET baned = %i WHERE admid = %i LIMIT 1", AdminInfo[playerid][admBaned], AdminInfo[playerid][admID]);
    mysql_tquery(dbHandle, YCMDstr, "", "");
    return true;
}
Код стоков Даты:
Код:
stock mktime(hour,minute,second,day,month,year)
{
    new timestamp2;
    timestamp2 = second + (minute * 60) + (hour * 3600);
    static days_of_month[12] = {31,28,31,30,31,30,31,31,30,31,30,31};
    if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) ) days_of_month[1] = 29;
    else days_of_month[1] = 28;
    new days_this_year = day;
    if(month)
    {
        for(new i=0; i<month-1;i++)
        {
            days_this_year += days_of_month[i];
        }
    }
    timestamp2 += (days_this_year) * 86400;
    for(new j=1970;j<year;j++) {
        timestamp2 += 31536000;
        if ( ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0) )  timestamp2 += 86400;
    }
    return timestamp2;
}
stock Now() {
  new hour,minute,second;
  new year, month,day;
  gettime(hour, minute, second);
  getdate(year, month, day);
  return mktime(hour,minute,second,day,month,year);
}
Код окна при входе:
Код:
case 25:
        {
            if(r)
            {
                new ban;
                cache_get_value_name_int(0,"Unban", ban);
                new year, month, day,hour,minute,second;
                timestamp_to_date(ban,year,month,day,hour,minute,second);
                format(YCMDstr, sizeof(YCMDstr), "{D95A41}Этот аккаунт заблокирован\nДата разбана: %02i/%02i/%02i в %02i:%02i\nВведите \"/q\" чтобы выйти\n",day,month,year,hour,minute);
                ShowPlayerDialogEx(playerid,78,0,"{c22000}Внимание",YCMDstr,"Закрыть","");
                return KickEx(playerid, "Ban");
            }
            else
            {
                gMysqlRaceCheck[playerid] ++;
                new t_stra[256];
                mysql_format(dbHandle, t_stra, sizeof t_stra, "SELECT * FROM accounts WHERE Name = '%s' LIMIT 1", User[playerid][pName]);
                mysql_tquery(dbHandle, t_stra, "CheckPlayerRegistered", "ii", playerid, gMysqlRaceCheck[playerid]);
            }
            return 1;
        }
case 26:
        {
            new null[2] = 0;
            if(r)
            {
                for(x = 1; x <= r; x++)
                {

                    new unban;
                     cache_get_value_name_int(x-1, "Unban", unban);
                    cache_get_value_name(x-1, "Name", QUERY, MAX_PLAYER_NAME);
                    if(unban < Now())
                    {
                        mysql_format(dbHandle,QUERY,128, "DELETE FROM `ban` WHERE `Name` = '%e'",QUERY);
                        mysql_tquery(dbHandle,QUERY,"","");
                        null[0]++;
                    }
                    null[1]++;
                }
            }
            printf("[Загрузка ...] Забаненых аккаунтов %i. Разбанено %i аккаунтов",null[1],null[0]);
        }
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу