Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Показано с 1 по 2 из 2

Тема: Mysql r41-2 vip

  1. #1
    Аватар для Покемон
    Пользователь

    Статус
    Оффлайн
    Регистрация
    21.01.2018
    Сообщений
    1
    Репутация:
    0 ±

    Mysql r41-2 vip

    Всем доброе времени суток пользователям pro-pawn, я не так давно начал изучать mysql, и уже столкнулся с такой проблема :(
    Хочу сделать вип по дням, но почему-то не загружается дата вип аккаунта. Хотел бы у вас узнать где тут моя ошибка!?
    И пожалуйста, если не трудно то с объяснениями так как хочу в будущим не допускать таких ошибок!
    Выдача вип аккаунта:
      Открыть/закрыть
    if(!(1 < days < 365)) return SendClientMessage(playerid, COLOR_LIGHTRED, "Не больше 365 и не меньше 1 дня(ей)!");
    PlayerInfo[playerid][pDonate] -= days*VipCost;
    PlayerInfo[playerid][pVip] = 1;
    format(stringEA,sizeof(stringEA),"INSERT INTO `vips` (`Nick`, `UnVipDate`, `VipDate`, `VipTime`) VALUES ('%s',NOW() + INTERVAL %d DAY, NOW(),'%d')",PlayerInfo[playerid][pName],days,gettime() + (86400*days));
    mysql_tquery(mysql_connection, stringEA, "","");

    В авторизацию вставил так:
      Открыть/закрыть
    format(stringEA, sizeof(stringEA), "SELECT (UNIX_TIMESTAMP(`UnVipDate`)) AS `time` FROM `vips` WHERE `Nick` = '%s'", PlayerInfo[playerid][pName]);
    mysql_tquery(mysql_connection, stringEA, "CheckVip", "d", playerid);

    Далее сделал так:
      Открыть/закрыть
    public CheckVip(playerid)
    {
    new stringEA[200];
    new time;
    if(time-gettime() < 0)
    {
    format(stringEA, sizeof(stringEA), "DELETE FROM `vips` WHERE `Nick` = '%s'",PlayerInfo[playerid][pName]);
    mysql_tquery(mysql_connection, stringEA, "","");
    PlayerInfo[playerid][pVip] = 0;
    ShowPlayerDialog(playerid,11111,DIALOG_STYLE_MSGBOX,"{FFFFFF}Внимание!","{FFFFFF}Время вашего VIP аккаунта истекло!\nВипка была снята!","Хорошо","");
    return true;
    }
    else
    {
    format(stringEA, sizeof(stringEA), "\
    {FFFFFF}Добро пожаловать VIP игрок!\n\
    Дата выдачи VIP: %s\n\
    Дата снятия VIP: %s");
    ShowPlayerDialog(playerid,11111,DIALOG_STYLE_MSGBOX,"{FFFFFF}Внимание!",stringEA,"Хорошо","");
    }
    return true;
    }

    Пишет постоянно что вип аккаунт снят, хотя дни его действия не закончились (

  2. #2
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    В CheckVip переменной time не присвоено никакое значение, из-за чего она по умолчанию равна нулю. Соответственно, дальше условие (time-gettime() < 0) всё время будет выдавать false.
    Также следует добавить в данные игрока (pInfo) поле под время истечения срока VIP-аккаунта, как в таблице vips. Именно оттуда и следует брать время в CheckVip (вы же не собираетесь грузить БД запросами при кадой проверке VIP?)
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  3. Пользователь сказал cпасибо:
    Покемон (04.02.2018)
 

 

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •