SA-MP Forums Archive
MySQL - получение данных (путает) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Русский/Russian (https://sampforum.blast.hk/forumdisplay.php?fid=32)
+---- Thread: MySQL - получение данных (путает) (/showthread.php?tid=430703)



MySQL - получение данных (путает) - Ted67 - 14.04.2013

Здравствуйте, столкнулся с такой проблемой что у игроков в инвентарях стали появляться вещи которые не принадлежат им.

Запрос:
pawn Код:
format(STR,128,"SELECT * FROM `"TABLE_INV"` WHERE `ID`='%d' LIMIT 1",GetGVarInt("p_id",p));
mysql_function_query(1,STR,true,"LoadPlayerItems2","i",p);
Загрузка:

pawn Код:
new gad[5];
for(new i;i!=MAX_PLAYER_ITEMS;i++)
{
format(SQL,10,"Item%d",i);
cache_get_field_content(0,SQL,gad),PlayerInfo[p][pItem][i]=strval(gad);
format(SQL,10,"PItem%d",i);
cache_get_field_content(0,SQL,gad),PlayerInfo[p][pPItem][i]=strval(gad);
}
В чем может быть проблема? (такое не у всех, из 100 человек такое может быть только у 5). Заранее благодарю за помощь.


Re: MySQL - получение данных (путает) - eakwarp - 15.04.2013

Может дело в том, что данные инвентаря не обнуляются при регистрации. И остаются от предыдущего залогиневшегося?


Re: MySQL - получение данных (путает) - Ted67 - 15.04.2013

Я проверяю, если не найден то обнуляю и далее уже создаю запись в базе данных. Обнуление:
pawn Код:
for(new i=0;i!=MAX_PLAYER_ITEMS;i++)PlayerInfo[p][pItem][i]=-1,PlayerInfo[p][pPItem][i]=0;



Re: MySQL - получение данных (путает) - CamperGTA - 16.04.2013

Quote:
Originally Posted by Ted67
Посмотреть сообщение
Я проверяю, если не найден то обнуляю и далее уже создаю запись в базе данных. Обнуление:
pawn Код:
for(new i=0;i!=MAX_PLAYER_ITEMS;i++)PlayerInfo[p][pItem][i]=-1,PlayerInfo[p][pPItem][i]=0;
а зачем ты присваеваешь 2 раза? сначала -1, потом 0?


Re: MySQL - получение данных (путает) - Ted67 - 16.04.2013

Quote:
Originally Posted by CamperGTA
Посмотреть сообщение
а зачем ты присваеваешь 2 раза? сначала -1, потом 0?
Это 2 разные переменные. (pItem и pPItem)


Re: MySQL - получение данных (путает) - NameNone - 16.04.2013

Quote:
Originally Posted by Ted67
Посмотреть сообщение
Это 2 разные переменные. (pItem и pPItem)
Тоже сначала не уловил разницы.


Re: MySQL - получение данных (путает) - Ted67 - 16.04.2013

Так в чем может быть дело? Изначально идет проверка на наличие в таблице записи, если запись есть, просто гружу:

pawn Код:
new gad[5];
for(new i;i!=MAX_PLAYER_ITEMS;i++)
{
format(SQL,10,"Item%d",i);
cache_get_field_content(0,SQL,gad),PlayerInfo[p][pItem][i]=strval(gad);
format(SQL,10,"PItem%d",i);
cache_get_field_content(0,SQL,gad),PlayerInfo[p][pPItem][i]=strval(gad);
}
иначе обнуляю переменные и после создаю запись:

pawn Код:
for(new i=0;i!=MAX_PLAYER_ITEMS;i++)PlayerInfo[p][pItem][i]=-1,PlayerInfo[p][pPItem][i]=0;
// тут создание
Все вроде как отлично работает, только иногда, очень редко, как будто путает, вновь зарегистрировавшийся игрок жалуется что в инвентаре у него левые вещи.


Re: MySQL - получение данных (путает) - Frapsy - 17.04.2013

Ну если он их видит, то, наверное, они остаются от других игроков, когда те выходят. Может и ошибаюсь.