Вопросы

Спойлер

stock SaveGifts(playerid)
{
    new str[MAX_GIFTS*2];
	for(new i; i < MAX_GIFTS; i++)
	{
		if(i+1 == MAX_GIFTS) {
			 format(str, sizeof str, "%s%d",str, PI[playerid][pPrize][i]);
			 break;
		}
		format(str, sizeof str, "%s%d,", str, PI[playerid][pPrize][i]);
	}
	mysql_format(dbHandle, STRING_GLOBAL, sizeof str, "UPDATE "T_ACCOUNTS" SET `gifts` = `%s` WHERE `name` = '%s'", str, PI[playerid][pName]);
	mysql_function_query(dbHandle, STRING_GLOBAL, false, "", "");
	printf("%s - query, %s - name", STRING_GLOBAL, PI[playerid][pName]);
	return 1;
}
stock LoadPodarok()
{
	new TOTALGIFTS;
	new time = GetTickCount();
	for(new i; i < sizeof(PODAROK_CORD); i++)
	{
        gift_pick[i] = CreatePickup(19056,1, PODAROK_CORD[i][ppX], PODAROK_CORD[i][ppY], PODAROK_CORD[i][ppZ]);
		TOTALGIFTS++;
	}
	print("############### Система подарков загружена! ###############");
	printf("$ Кол-во загруженных подарков: %d штук из %d возможных    $", TOTALGIFTS, MAX_GIFTS);
	printf("$ Скорость загрузки: %d миллисекунд                       $", GetTickCount()-time);
	printf("###########################################################");
	return true;
}

 

 

Поделиться сообщением


Ссылка на сообщение

8 ответов на этот вопрос

  • 0

@archiboy6 а где они должны сохранятся?

Поделиться сообщением


Ссылка на сообщение
  • 0

@User Shokolad они должны в базу сохранится, чтобы после перезахода/рестарта игрокам заного собирать не пришлось P.S Система делал DEST

Поделиться сообщением


Ссылка на сообщение
  • 0

@archiboy6, ну, покажите mysql_log.

Поделиться сообщением


Ссылка на сообщение
  • 0

@odosenok 

[16:45:26] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column '1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,' in 'field list' 
[16:45:30] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column '1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,' in 'field list' 
[16:47:17] [ERROR] CMySQLQuery::Execute[] - (error #1054) Unknown column '1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,' in 'field list'
Спойлер

stock SaveGifts(playerid)
{
	new str[MAX_GIFTS*2];
	for(new i; i < MAX_GIFTS; i++)
	{
	if(i+1 == MAX_GIFTS) {
	format(str, sizeof str, "%s%d",str, PI[playerid][pPrize][i]);
	break;
	}
	format(str, sizeof str, "%s%d,", str, PI[playerid][pPrize][i]);
	}
	new stra[600];
	format(stra,sizeof(stra), "UPDATE `accounts` SET `gifts` = `%s` WHERE `name` = '%s'", str, PI[playerid][pName]);
	mysql_function_query(dbHandle, stra, false, "", "");
	printf("%s - query, %s - name", stra, PI[playerid][pName]);
	return 1;
}

 

 

Поделиться сообщением


Ссылка на сообщение
  • 0
3 часа назад, archiboy6 сказал:

@odosenok 

  код (закрыть спойлер)


format(stra,sizeof(stra), "UPDATE `accounts` SET `gifts` = `%s` WHERE `name` = '%s'", str, PI[playerid][pName]);

 

 

 

Попробуйте вот так сделать:

format(stra,sizeof(stra), "UPDATE `accounts` SET `gifts` = '%s' WHERE `name` = '%s'", str, PI[playerid][pName]);

Потому что названия столбцов, таблиц следует заключать в тильды (`), а сами значения в апострофы ('). У вас же текст (%s) был заключен в тильды, что не есть правильно. По сути база данных пыталась к столбцу gifts приравнять столбец, название которого состоит из кучи нулей (эти нули вы записываете выше в цикле).

 

И еще обратите внимание на такой момент: в логах строка с рядом нулей заканчивается запятой. Возможно, плагин MySQL ее и обрезал, но все-таки, если данный выше ответ не поможет, проверьте, точно ли вся строка с рядом нулей успешно помещается в str.

Поделиться сообщением


Ссылка на сообщение
  • 0

@odosenok воо, теперь в столбце появляются, а почему идет от 0?

	format(str, sizeof str, "{00B3FF}Вы нашли %d из 30 подарков", count );
		SendClientMessage(playerid, -1, str);
		format(str, sizeof str, "{00B3FF}Вы получили %d %s", amount, prize );
		SendClientMessage(playerid, -1, str);
		PI[playerid][pPrize][i] = 1;
		SaveGifts(playerid);
		break;

Когда беру 1-й подарок, показывает вы нашли 0 из 30 подарков

Поделиться сообщением


Ссылка на сообщение
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

  • Похожий контент

    • Артём Профиков
      От Артём Профиков
      У меня есть система подсказок вот так она выглядет
      ShowNotification(playerid, тип, "текст", время, "команда через /", "текст кнопки");
      Только есть вопрос как сделать так чтоб она активировалась в определенном радиусе? Заранее спасибо