PDA

Просмотр полной версии : [Вопрос] Проблема с типом диалога DIALOG_STYLE_TABLIST_HEADERS



nikvlad
05.06.2016, 21:47
Расскажу все по порядку: у меня есть система заказа продуктов в бизнес (человек вводит /business и заказывает продукты). Тому, кто работает развозчиком продуктов приходит оповещение (Есть заказ, введите /bizlist). Он вводит /bizlist и ему показывается заказ:http://i.imgur.com/6E7YNTI.jpg. Но, когда другой человек делает заказ из другого бизнеса, то заказ от другого человека замещает заказ от первого:http://i.imgur.com/J601YRB.jpg. А надо, чтобы они шли друг за другом:http://i.imgur.com/yvAuHk0.jpg.

Вот код:
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;
}

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

Desulaid
05.06.2016, 22:25
Это не помощь уже, а просьба, место которой на столе заказов(((9(9

nikvlad
05.06.2016, 22:27
Это не помощь уже, а просьба, место которой на столе заказов(((9(9

мне бы просто понять, почему так происходит

SnyXes
06.06.2016, 00:27
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. Размер переменных не вычислял. Нужно кол-во заказов умножать и т.п, а я ленивый)).

$continue$
06.06.2016, 00:33
Нужно понять как эти заказы хранятся?

nikvlad
06.06.2016, 14:03
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. Размер переменных не вычислял. Нужно кол-во заказов умножать и т.п, а я ленивый)).

Я сделал по вашему коду, но появился такой артефакт: http://i.imgur.com/Km7f22C.jpg
То есть: когда заказывает 2-й человек, заменяются обе строки на новый заказ

SnyXes
06.06.2016, 16:50
Я сделал по вашему коду, но появился такой артефакт: http://i.imgur.com/Km7f22C.jpg
То есть: когда заказывает 2-й человек, заменяются обе строки на новый заказ

Покажи код, где добавляешь заказ (/business)

nikvlad
06.06.2016, 18:43
Покажи код, где добавляешь заказ (/business)


TOTALPRODUCT++;
ProductInfo[TOTALPRODUCT][pPriceprod] = products*2; // Цена за оплату (1 = 2)
ProductInfo[TOTALPRODUCT][pTillprod] = products;// Сколько продуктов было заказано
ProductInfo[TOTALPRODUCT][pBizzidprod] = bizid; // ID бизнеса
ProductInfo[TOTALPRODUCT][pStatusprod] = false; // Статус заказа. (При выполнении сделать 1)

SnyXes
06.06.2016, 21:33
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;
}

Вот такой код у меня на сервере работает. Проверь.

nikvlad
07.06.2016, 10:49
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;
}

Вот такой код у меня на сервере работает. Проверь.

Не получается. Везде нулевые значения.

nikvlad
07.06.2016, 12:50
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;
}

Вот такой код у меня на сервере работает. Проверь.

Все, я сделал! Вообщем у меня переменная p не была равна TOTALPRODUCT, а меньше на 1. Сделал таким образом, получилось:
format(str_body, sizeof(str_body), "%s\n№ %i\t|%i шт. из 3000|\t%i", str_body, ProductInfo[p+1][pBizzidprod]+1, ProductInfo[p+1][pTillprod], ProductInfo[p+1][pTillprod]+ProductInfo[p+1][pTillprod]/2);:pardon:
Спасибо за помощь!:blush2:

Можно закрывать!

SnyXes
07.06.2016, 15:09
Лучше сделай цикл от 1. Я просто думал у тебя от 0 заказы.