Вопросы

Спойлер

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 пользователей онлайн

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

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

    • Узбек
      От Узбек
      Всем добрый вечер ребят! 
      Я начинающий, сегодня я вам сливаю команду 2(шт) на технические работы
      Ловите 
       
    • nazpol9
      От nazpol9
      Привет всем.

      У меня имеется мод для самп сервера и VPS с Ubuntu, на котором я пытаюсь его запустить.

      В чем суть проблемы: при запуске samp03svr, сервер запускается, но на версии 0.3.DL R-1. Когда я пытаюсь запустить этот же мод локально на Windows, сервер работает на версии 0.3.7 и я могу зайти на него без клиента 0.3.DL.

      Для решения этой проблемы я уже пробовал заменять инклуды и исполнительные файлы теми, что есть в архивах на официальном сайте сампа, перекомпилировал мод, и ничего не изменилось.
       
      #include <a_samp> #include <a_mysql> #include <foreach> #include <Pawn.RakNet> #include <streamer> #include <sscanf2> #include <float2> #include <crashdetect> #include <fmt> #include <a_http> #include <Pawn.CMD> #include <Pawn.Regex> #include <requests> #include <callbacks> #include <MD5> #include <mxdate> #include <TOTP> #include <gvar> #include <md-sort> #include <nex-ac> #include <weapon-config> #include <discord-connector> #include <3DTryg> #include <textdraw-streamer>  
      plugins crashdetect.so streamer.so textdraw-streamer.so sscanf.so pawnraknet.so pawncmd.so mysql.so requests.so profiler.so pawnregex.so TOTP.so gvar.so discord-connector.so

      Если у кого-то будут какие-либо догадки, прошу ими поделиться, если понадобится больше информации - я постараюсь её предоставить.