Вопросы

Здравствуйте уважаемые пользователи форума.

Прошу Вашей помощи, на этом форуме уже выкладывали систему подарков: Кликабельна

Но она мне не подходит. Ее уже я пробовал.

 

Мне нужна система что-бы при подборе подарка к примеру 15 из 35. Что бы он записывал все подобранные значения в один переменную, а не в столько сколько подарков.

 

Пример: 

В Базе Данный есть переменная pPodarok хоронящий в себе не один подарок а несколько.

При этом нужно что бы при рестарте переменная pPodarok не сбрасывало значения. 

И при рестарте не приходилось собирать подарки по новой. 

 

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


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

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

  • 0

Вот с помощью этой штуки можно реализовать твою задумку https://pawno-rus.ru/topic/834-ispolzovanie-sscanf/

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


Ссылка на сообщение
  • 0
  В 11/10/2017 в 17:35, DEST сказал:

Вот с помощью этой штуки можно реализовать твою задумку https://pawno-rus.ru/topic/834-ispolzovanie-sscanf/

Читать далее...  

Пока не очень понятно можете пример привести?

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


Ссылка на сообщение
  • 0
  В 11/10/2017 в 17:35, DEST сказал:

Вот с помощью этой штуки можно реализовать твою задумку https://pawno-rus.ru/topic/834-ispolzovanie-sscanf/

Читать далее...  

 

Вот что я смог сделать:

 

if(pickupid == podarok[1])
	{
		switch(random(2))
		{
			case 0:
			{
				GivePlayerMoney(playerid, 5000);
				pInfo[playerid][pCash] += 5000;
                format(stringer, sizeof(stringer), "Вы подобрали подарок. Приз %d рублей", pInfo[playerid][pCash]);
				SCM(playerid, COLOR_BLUE, stringer);
				sscanf(pInfo[playerid][pPodarok], "p<,>a<i>[2]",pInfo[playerid][pPodarok]);
				pInfo[playerid][pPodarok]=1;
			}
			case 1:
			{
                GivePlayerMoney(playerid, 5000);
				pInfo[playerid][pCash] += 5000;
                format(stringer, sizeof(stringer), "Вы подобрали подарок. Приз %d рублей", pInfo[playerid][pCash]);
				SCM(playerid, COLOR_BLUE, stringer);
                sscanf(pInfo[playerid][pPodarok], "p<,>a<i>[2]",pInfo[playerid][pPodarok]);
                pInfo[playerid][pPodarok]=1;
			}
		}
		pInfo[playerid][pPodarok]++;
		format(mysql_query_string, 200, "UPDATE "T_ACCOUNTS" SET podarok = '%d' WHERE name = '%s'", pInfo[playerid][pPodarok], pInfo[playerid][pName]);
		mysql_tquery(dbHandle, mysql_query_string, "", "");
	}

 

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


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

@Andrey_Akkerman в той теме приводятся примеры, все довольно-таки просто. 

В базе будут хранится данные: 0,0,0,0,0,0

                                                     1,2,3,4,5,6

Выделенный шрифт - порядковый номер подарка (в базе не отображается, приведен для наглядности). 

Обычный шрифт - значения подарка (в базе отображается именно в таком виде). 

Записывать соответственно так: 
 

new formatquery[?]; //где ? кол-во символов для запроса
format(formatquery, sizeof formatquery, "UPDATE table_name SET field_name = "%d, %d, %d, %d, %d" WHERE unique_field = unique_value", podarok[0], podarok[1], podarok[2] ... podarok[n]); 
mysql_tquery(dbHandle, formatquery, "", "");

Ну а как считывать пример в теме дан. 

Переменную нужно уже объявлять таким образом: 
 

new podarok[?]; // где вместо ? кол-во подарков

 

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


Ссылка на сообщение
  • 0
  В 11/10/2017 в 19:15, DEST сказал:

@Andrey_Akkerman в той теме приводятся примеры, все довольно-таки просто. 

В базе будут хранится данные: 0,0,0,0,0,0

                                                     1,2,3,4,5,6

Выделенный шрифт - порядковый номер подарка (в базе не отображается, приведен для наглядности). 

Обычный шрифт - значения подарка (в базе отображается именно в таком виде). 

Записывать соответственно так: 
 

new formatquery[?]; //где ? кол-во символов для запроса
format(formatquery, sizeof formatquery, "UPDATE table_name SET field_name = "%d, %d, %d, %d, %d" WHERE unique_field = unique_value", podarok[0], podarok[1], podarok[2] ... podarok[n]); 
mysql_tquery(dbHandle, formatquery, "", "");

Ну а как считывать пример в теме дан. 

Переменную нужно уже объявлять таким образом: 
 

new podarok[?]; // где вместо ? кол-во подарков

 

Читать далее...  

 

Я сделал так, только он не сохраняет в БД, а он переводит в другое число.

На срине увидешь что там не то число которое  хотел.

Изображение 

  Сам код с выдачей и сохранением подарка. (открыть спойлер)

 

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


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

@Andrey_Akkerman какая переменная у тебя отвечает за хранение информации о получении подарка?

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


Ссылка на сообщение
  • 0
  В 12/8/2017 в 12:44, DEST сказал:

@Andrey_Akkerman какая переменная у тебя отвечает за хранение информации о получении подарка?

Читать далее...  

new podar[MAX_PLAYERS]

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


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

@Andrey_Akkerman ну вот значит при получении игроком подарка присваивать: 

podar[playerid][XX] = 1; 
//где вместо XX ид номер получаемого подарка (начиная с нуля)

И при выходе его из игры сохранять: 

new mysql_query[X]; 
mysql_format(connectionid, mysql_query, X, "UPDATE `table_accounts` SET `podarok` = '%d'", podar[playerid][0], podar[playerid][1], podar[playerid][2]); 
mysql_function_query(connectionid, mysql_query, false, "", "");

Ну и объявление переменной заменить:

new podar[MAX_PLAYERS][YY]; 
//где вместо YY кол-во подарков всего

 

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


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

Помоги ни как не могу разобратся, он в БД записывает подарки вот так: 1,1,1,1 и т.д.

Щас скину весь код по подаркам помоги.

 

Ко всем new

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

 

В enum аккаунта

  открыть спойлер

 

в OnGameModeInit

  открыть спойлер

 

В OnPlayerConnect

  открыть спойлер

 

В OnPlayerPickUpDynamicPickup

Для примера приведен 1 констант, остальные 2 точно такие же.

  открыть спойлер

 

Вот весь код.

Он не сохраняет подарки после рестарта сервера.

Отредактировано пользователем Andrey_Akkerman

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


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

@Andrey_Akkerman ты так и не разберешся, насоздавал 500 переменных, непонятно что хранящих. Сначала наведи порядок в своем коде, поудаляй вот эту хрень со сканфом, непонятно вообще что записывающую 

  В 12/8/2017 в 14:40, Andrey_Akkerman сказал:

sscanf(pInfo[playerid][pPodarok], "p<,>a<i>[3]",pInfo[playerid][pPodarok]);

Читать далее...  

Объясню в общем виде, под код сам подстроишь. 

В OnPlayerDisconnect добавь обнуление переменной для КАЖДОГО подарка: 

podarok[playerid][0] = 0; 
podarok[playerid][1] = 0; 
// и т.д. для всех

После там, где идет выдача изменяй значение нужного подарка на единицу. Т.е. с нуля на единицу. 
После, там, где у тебя идет сохранение аккаунта добавь по примеру сохранение своих подарков (скидывал выше готовый mysql запрос.

После, там,  где у тебя загрузка аккаунта добавь по примеру (скидывал тему в первом посте) загрузку этих данных, используя sscanf ( ИСПОЛЬЗОВАТЬ ЕГО НУЖНО ТОЛЬКО ЗДЕСЬ, А НЕ ПРИ ВЫДАЧЕ ). 

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


Ссылка на сообщение
  • 0
  В 12/8/2017 в 14:47, DEST сказал:

@Andrey_Akkerman ты так и не разберешся, насоздавал 500 переменных, непонятно что хранящих. Сначала наведи порядок в своем коде, поудаляй вот эту хрень со сканфом, непонятно вообще что записывающую 

Объясню в общем виде, под код сам подстроишь. 

В OnPlayerDisconnect добавь обнуление переменной для КАЖДОГО подарка: 

podarok[playerid][0] = 0; 
podarok[playerid][1] = 0; 
// и т.д. для всех

После там, где идет выдача изменяй значение нужного подарка на единицу. Т.е. с нуля на единицу. 
После, там, где у тебя идет сохранение аккаунта добавь по примеру сохранение своих подарков (скидывал выше готовый mysql запрос.

После, там,  где у тебя загрузка аккаунта добавь по примеру (скидывал тему в первом посте) загрузку этих данных, используя sscanf ( ИСПОЛЬЗОВАТЬ ЕГО НУЖНО ТОЛЬКО ЗДЕСЬ, А НЕ ПРИ ВЫДАЧЕ ). 

Читать далее...  

То есть в OnPlayerDiscconect добавить сохранение подарков, а в загрузку аккаунтов что добавить?

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


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

@Andrey_Akkerman В OnPlayerDisconnect добавить обнуление. Там где все сохранения добавить сохранение, там где загрузка акка добавить загрузку по примеру, с использованием sscanf. Я же не знаю как у вас загрузка в моде идет. 

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


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

@steve Много,у нас не адекватов развелось..Пора банить уже.. 

 

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


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

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

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

    • Talex
      От Talex
      Игровой сервер Life Game RolePlay
      Скачать файл Игровой сервер Life Game RolePlay
      Добавил Talex Добавлено 28.01.2024 Категория Моды Автор Неизвестно  
    • Talex
      От Talex
      Игровой сервер Life Game RolePlay
    • Владислав2
      От Владислав2
      Здравствуйте, при компиляции появляется ошибка,

      Ошибка:
      error 017: undefined symbol "REP_KUZIA_TD"

      Строки:
       
          REP_KUZIA_TD[0] = TextDrawCreate(7.499990, 314.444396, "REP: 1");
          TextDrawLetterSize(REP_KUZIA_TD[0], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[0], 1);
          TextDrawColor(REP_KUZIA_TD[0], -1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          TextDrawSetOutline(REP_KUZIA_TD[0], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[0], 255);
          TextDrawFont(REP_KUZIA_TD[0], 1);
          TextDrawSetProportional(REP_KUZIA_TD[0], 1);
          TextDrawSetShadow(REP_KUZIA_TD[0], 0);
          REP_KUZIA_TD[1] = TextDrawCreate(6.249957, 330.518493, "ASK: 0");
          TextDrawLetterSize(REP_KUZIA_TD[1], 0.400000, 1.600000);
          TextDrawAlignment(REP_KUZIA_TD[1], 1);
          TextDrawColor(REP_KUZIA_TD[1], -1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          TextDrawSetOutline(REP_KUZIA_TD[1], 1);
          TextDrawBackgroundColor(REP_KUZIA_TD[1], 255);
          TextDrawFont(REP_KUZIA_TD[1], 1);
          TextDrawSetProportional(REP_KUZIA_TD[1], 1);
          TextDrawSetShadow(REP_KUZIA_TD[1], 0);
          return 1;
      }

      Буду рад если кто-то поможет