Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 1 из 2 1 2 ПоследняяПоследняя
Показано с 1 по 10 из 12
  1. #1
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±

    Проблема с типом диалога DIALOG_STYLE_TABLIST_HEADERS

    Расскажу все по порядку: у меня есть система заказа продуктов в бизнес (человек вводит /business и заказывает продукты). Тому, кто работает развозчиком продуктов приходит оповещение (Есть заказ, введите /bizlist). Он вводит /bizlist и ему показывается заказ:
      Открыть/закрыть
    . Но, когда другой человек делает заказ из другого бизнеса, то заказ от другого человека замещает заказ от первого:
      Открыть/закрыть
    . А надо, чтобы они шли друг за другом:
      Открыть/закрыть
    .

    Вот код:
      Открыть/закрыть
    Код:
    stock ProductList(playerid)
    {
        static const //константы
            title[] = "Заказы", // заголовок
            head[] = "Бизнес\tПродуктов\tДоход\n", // подзаголовок
            body[] = "№ %i\t|%i шт. из 3000|\t%i\n"; // строки
        new // переменные
            str_title[sizeof(title)+1], // переменная заголовка
            str_body[(sizeof(head)+(sizeof(body))+1+1-2-2-2-2+3+4+5+(sizeof(body)))]; // переменная тела (подзаголовок,строки)
        format(str_title, sizeof(str_title), title, str_title); // форматируем в переменную str_title константу title. Получаем полноценный заголовок.
        format(str_body, sizeof(str_body), body, ProductInfo[TOTALPRODUCT][pBizzidprod]+1, ProductInfo[TOTALPRODUCT][pTillprod], ProductInfo[TOTALPRODUCT][pTillprod]+ProductInfo[TOTALPRODUCT][pTillprod]/2); // форматируем в переменную str_body константу body с параметрами ID бизнеса, заказано продуктов, оплата
    	strins(str_body, head, 0); // внедряем в переменную str_body (она отформатированна) константу head, причем head внедряется с 0 позиции.
    	if(TOTALPRODUCT == 0) return ShowPlayerDialog(playerid, 0, 0, "{96e300}Заказы", "Новых заказов нет.", "Закрыть", "");
    	ShowPlayerDialog(playerid, 5001, DIALOG_STYLE_TABLIST_HEADERS, str_title, str_body, "Принять", "Отмена");
    	return 1;
    }


    Помогите неумёхе, пожалуйста!

  2. #2
    Аватар для Desulaid
    лесоруб продакшен

    Статус
    Оффлайн
    Регистрация
    15.03.2015
    Адрес
    Slobodskoy
    Сообщений
    667
    Репутация:
    236 ±
    Это не помощь уже, а просьба, место которой на столе заказов(((9(9

  3. #3
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от Anton Styazhkin Посмотреть сообщение
    Это не помощь уже, а просьба, место которой на столе заказов(((9(9
    мне бы просто понять, почему так происходит

  4. #4
    Аватар для SnyXes
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.05.2016
    Сообщений
    11
    Репутация:
    5 ±
    Код:
    stock ProductList(playerid)
    {
    	if(!TOTALPRODUCT) return ShowPlayerDialog(playerid, 0, 0, "{96e300}Заказы", "Новых заказов нет.", "Закрыть", "");
    	
    	new str_body[1024]; format(str_body, 32, "Бизнес\tПродуктов\tДоход\n");
    	for(new p = 0; p < TOTALPRODUCT; p++)
    	{
    		format(str_body, sizeof(str_body), "%s№ %i\t|%i шт. из 3000|\t%i\n", str_body, ProductInfo[p][pBizzidprod]+1, ProductInfo[p][pTillprod], ProductInfo[p][pTillprod]+ProductInfo[p][pTillprod]/2);
    	}
    	ShowPlayerDialog(playerid, 5001, DIALOG_STYLE_TABLIST_HEADERS, "{96e300}Заказы", str_body, "Принять", "Отмена");
    	return 1;
    }
    Не тестировал, но должно работать.)

    Это происходит потому, что ты не сделал цикл всех продуктов. Хотя не знаю что у тебя там в ProductInfo хранится.

    P.S. Размер переменных не вычислял. Нужно кол-во заказов умножать и т.п, а я ленивый)).
    Последний раз редактировалось SnyXes; 06.06.2016 в 00:34.

  5. Пользователь сказал cпасибо:
    nikvlad (07.06.2016)
  6. #5
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Нужно понять как эти заказы хранятся?
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  7. #6
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от SnyXes Посмотреть сообщение
    Код:
    stock ProductList(playerid)
    {
    	if(!TOTALPRODUCT) return ShowPlayerDialog(playerid, 0, 0, "{96e300}Заказы", "Новых заказов нет.", "Закрыть", "");
    	
    	new str_body[1024]; format(str_body, 32, "Бизнес\tПродуктов\tДоход\n");
    	for(new p = 0; p < TOTALPRODUCT; p++)
    	{
    		format(str_body, sizeof(str_body), "%s№ %i\t|%i шт. из 3000|\t%i\n", str_body, ProductInfo[p][pBizzidprod]+1, ProductInfo[p][pTillprod], ProductInfo[p][pTillprod]+ProductInfo[p][pTillprod]/2);
    	}
    	ShowPlayerDialog(playerid, 5001, DIALOG_STYLE_TABLIST_HEADERS, "{96e300}Заказы", str_body, "Принять", "Отмена");
    	return 1;
    }
    Не тестировал, но должно работать.)

    Это происходит потому, что ты не сделал цикл всех продуктов. Хотя не знаю что у тебя там в ProductInfo хранится.

    P.S. Размер переменных не вычислял. Нужно кол-во заказов умножать и т.п, а я ленивый)).
    Я сделал по вашему коду, но появился такой артефакт:
      Открыть/закрыть

    То есть: когда заказывает 2-й человек, заменяются обе строки на новый заказ

  8. #7
    Аватар для SnyXes
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.05.2016
    Сообщений
    11
    Репутация:
    5 ±
    Цитата Сообщение от nikvlad Посмотреть сообщение
    Я сделал по вашему коду, но появился такой артефакт:
      Открыть/закрыть

    То есть: когда заказывает 2-й человек, заменяются обе строки на новый заказ
    Покажи код, где добавляешь заказ (/business)

  9. Пользователь сказал cпасибо:
    nikvlad (07.06.2016)
  10. #8
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от SnyXes Посмотреть сообщение
    Покажи код, где добавляешь заказ (/business)
    Код:
    			TOTALPRODUCT++;
    			ProductInfo[TOTALPRODUCT][pPriceprod] = products*2; // Цена за оплату (1 = 2)
    			ProductInfo[TOTALPRODUCT][pTillprod] = products;// Сколько продуктов было заказано
    			ProductInfo[TOTALPRODUCT][pBizzidprod] = bizid; // ID бизнеса
    			ProductInfo[TOTALPRODUCT][pStatusprod] = false; // Статус заказа. (При выполнении сделать 1)

  11. #9
    Аватар для SnyXes
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.05.2016
    Сообщений
    11
    Репутация:
    5 ±
    Код:
    stock ProductList(playerid)
    {
    	if(!TOTALPRODUCT) return ShowPlayerDialog(playerid, 0, 0, "{96e300}Заказы", "Новых заказов нет.", "Закрыть", "");
    	
    	new str_body[1024];
    	for(new p = 0; p < TOTALPRODUCT; p++)
    	{
    		format(str_body, sizeof(str_body), "%s\n№ %i\t|%i шт. из 3000|\t%i", str_body, ProductInfo[p][pBizzidprod]+1, ProductInfo[p][pTillprod], ProductInfo[p][pTillprod]+ProductInfo[p][pTillprod]/2);
    	}
            format(str_body, sizeof(str_body), "Бизнес\tПродуктов\tДоход\n%s", str_body);
    	ShowPlayerDialog(playerid, 5001, DIALOG_STYLE_TABLIST_HEADERS, "{96e300}Заказы", str_body, "Принять", "Отмена");
    	return 1;
    }
    Вот такой код у меня на сервере работает. Проверь.

  12. Пользователь сказал cпасибо:
    nikvlad (07.06.2016)
  13. #10
    Аватар для nikvlad
    Пользователь

    Статус
    Оффлайн
    Регистрация
    04.02.2016
    Сообщений
    94
    Репутация:
    2 ±
    Цитата Сообщение от SnyXes Посмотреть сообщение
    Код:
    stock ProductList(playerid)
    {
    	if(!TOTALPRODUCT) return ShowPlayerDialog(playerid, 0, 0, "{96e300}Заказы", "Новых заказов нет.", "Закрыть", "");
    	
    	new str_body[1024];
    	for(new p = 0; p < TOTALPRODUCT; p++)
    	{
    		format(str_body, sizeof(str_body), "%s\n№ %i\t|%i шт. из 3000|\t%i", str_body, ProductInfo[p][pBizzidprod]+1, ProductInfo[p][pTillprod], ProductInfo[p][pTillprod]+ProductInfo[p][pTillprod]/2);
    	}
            format(str_body, sizeof(str_body), "Бизнес\tПродуктов\tДоход\n%s", str_body);
    	ShowPlayerDialog(playerid, 5001, DIALOG_STYLE_TABLIST_HEADERS, "{96e300}Заказы", str_body, "Принять", "Отмена");
    	return 1;
    }
    Вот такой код у меня на сервере работает. Проверь.
    Не получается. Везде нулевые значения.

 

 
Страница 1 из 2 1 2 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •