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 и p
PItem)
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
Ну если он их видит, то, наверное, они остаются от других игроков, когда те выходят. Может и ошибаюсь.