Question

Всем доброе времени суток пользователям pawno-rus, я не так давно начал изучать 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`, ) VALUES ('%s',NOW() + INTERVAL %d DAY, NOW())",PlayerInfo[playerid][pName],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_MSGBO X,"{FFFFFF}Внимание!","{FFFFFF}Время вашего VIP аккаунта истекло!\nВипка была снята!","Хорошо","");
return true;
}
else
{
format(stringEA, sizeof(stringEA), "\
{FFFFFF}Добро пожаловать VIP игрок!\n\
Дата выдачи VIP: %s\n\
Дата снятия VIP: %s");
ShowPlayerDialog(playerid,11111,DIALOG_STYLE_MSGBO X,"{FFFFFF}Внимание!",stringEA,"Хорошо","");
}
return true;
}

В интернете искал, но не чего не нашёл про mysql r41-2 а переходить на другую версию, иза одной только проблемы... Думаю это очень глупа. 

Edited by Покемон

Share this post


Link to post

8 answers to this question

  • 0

Проблема решена, была проблема  в запросе. Решил переписал бд сделал новый запрос, сделал новый паблик checkvip и тд... За место проверки на дату точнее UnVipDate, сделал Таймер gettime() + (60*60*24*days)  и все это сохранил. 

Использовал для проверки работы printf("%d", time);
 

Edited by Покемон

Share this post


Link to post
  • 0

@Покемон Не знаю где вы такой замороченный код достали, если не понимаете, лучше делать полегче. 

Выводите значение переменной time через printf.

Share this post


Link to post
  • 0
2 минуты назад, DEST сказал:

@Покемон Не знаю где вы такой замороченный код достали, если не понимаете, лучше делать полегче. 

Выводите значение переменной time через printf.

 

У меня та же проблема. Не получилось сделать. Может где то на вашем форуме есть такой скрипт?

Share this post


Link to post
  • 0

@Сергей Князев скрипт чего? Клавиатуры? Нужно в паблике CheckVip 4 строкой добавить:
 

printf("%d", time);

После вызвать этот код заходом в игру и скинуть логи. 

Share this post


Link to post
  • 0
19 минут назад, DEST сказал:

@Сергей Князев скрипт чего? Клавиатуры? Нужно в паблике CheckVip 4 строкой добавить:
 


printf("%d", time);

После вызвать этот код заходом в игру и скинуть логи. 

По пробовал, не чего не написало не загружается, скорее всего в запросе допустил ошибку. Можешь помочь её решить?
Я просто не знаю как использовать загрузку даты в Mysql. ( 

Share this post


Link to post
  • 0

@Покемон значит смотри в mysql_log.txt и проверяй в базе данных, изменяется значение при выдаче випки

Share this post


Link to post
  • 0
Только что, DEST сказал:

@Покемон значит смотри в mysql_log.txt и проверяй в базе данных, изменяется значение при выдаче випки

Там все правильно, в том то и  дело что при загрузки вип аккаунта проблемы ( 

Share this post


Link to post
  • 0

@Покемон значит попробуй заменить запрос:

format(stringEA, sizeof(stringEA), "SELECT * FROM `vips` WHERE `Nick` = '%s'", PlayerInfo[playerid][pName]);

И паблик заменить: 

public CheckVip(playerid)
{
  new stringEA[200];
  new time = cache_get_field_content_int(0, "UnVipDate");
  new vipdate = cache_get_field_content_int(0, "VipDate"); 
  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_MSGBO X,"{FFFFFF}Внимание!","{FFFFFF}Время вашего VIP аккаунта истекло!\nВипка была снята!","Хорошо","");
    return true;
  }
  else
  {
    format(stringEA, sizeof(stringEA), "\
    {FFFFFF}Добро пожаловать VIP игрок!\n\
    Дата выдачи VIP: %s\n\
    Дата снятия VIP: %s", date("dd.mm.yyyy, %hh:%ii:%ss", vipdate), date("dd.mm.yyyy, %hh:%ii:%ss", time));
    ShowPlayerDialog(playerid,11111,DIALOG_STYLE_MSGBO X,"{FFFFFF}Внимание!",stringEA,"Хорошо","");
  }
  return true;
}

 

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.

  • Similar Content