PDA

Просмотр полной версии : [Вопрос] Проблема с функцией



Ne_nub
29.07.2016, 04:01
Возникла такая проблема. Я решил сделать информацию для доната при вводе команды, но информационный текст пишет не полностью. В чем может быть проблема? Вот код:

new donate[600],string[600];
strcat(donate,"{FFFFFF}?? ?????? ???????? ?? ?????? ?????? ??? ??????\n");
strcat(donate,"????????, ??????? ????????? ?????, ????? ??????????\n");
strcat(donate,"?????????? ? ????? ????? ?????????? ?????\n\n");
strcat(donate,"????? ??????????????? ?????? ??????? {B83434}'????????'{FFFFFF}\n");
format(donate,sizeof(donate),"??? ?????????? ????? ???????? ????: "NAME_SITE"\n\n");
strcat(donate,"???? ?????????? ????? ????? ?????????? ?? ????? "NAME_SITE"/donate.html\n\n");
strcat(donate,"{B83434}??????????:{FFFFFF}\n");
format(string,sizeof(string),"??? ????????: \t\t\t%s\n",PlayerInfo[playerid][pNames]);
strcat(donate,string);
format(string,sizeof(string),"??????? ????????? ?????: \t%d ??????\n",PlayerInfo[playerid][pNewDonate]);
strcat(string,"{AFAFAF}\n????????? ?????????? ????? ?????? ???????? ????\n\n");
strcat(donate,string);
ShowPlayerDialog(playerid,5564,DIALOG_STYLE_MSGBOX,"{BE2D2D}??????? ??????",donate,"????????","??????");
return true;

BadPawn
29.07.2016, 04:06
Для начала, выложи код с текстом.

Обычно, когда не выводит полностью текст, массив побольше решит проблему.

vovandolg
29.07.2016, 04:11
Да тут и так понятно что цифры не правильно посчитал (хотя кто там их считал на обум влепил и всё...)

http://img0.joyreactor.cc/pics/comment/full/%D0%A8%D1%80%D0%B0%D0%BC-%D0%B8-%D1%82%D0%B0%D0%BA-%D1%81%D0%BE%D0%B9%D0%B4%D1%91%D1%82-%D0%BF%D0%B5%D1%81%D0%BE%D1%87%D0%BD%D0%B8%D1%86%D0%B0-2219908.jpeg

BadPawn
29.07.2016, 04:22
new donate[600],string[600];
strcat(donate,"");// текст в donate
strcat(donate,"");// текст в donate
strcat(donate,"");// текст в donate
strcat(donate,"");// текст в donate
format(donate,sizeof(donate),"");// форматирование donate, то бишь будет содержать только форматируемый текст, а все выше отсекается
strcat(donate,"");// к форматированному тексту
strcat(donate,"");// к форматированному тексту
format(string,sizeof(string),"",PlayerInfo[playerid][pNames]);//тут все верно, только массив слишком большой
strcat(donate,string);//форматируемый текст string скрепляем с donate в конец строки
format(string,sizeof(string),"",PlayerInfo[playerid][pNewDonate]);//так же.
strcat(string,"");// текст в string
strcat(donate,string);//и сам string в donate
ShowPlayerDialog(playerid,5564,DIALOG_STYLE_MSGBOX ,"шапка",donate,"кнопка1","кнопка2");
return true;

Ne_nub
29.07.2016, 15:05
Вообщем, делал всё что возможно, по вашим советам, но ничего не происходит. Выше текст после кода


format(donate,sizeof(donate),"Для пополнения счета посетите сайт: "NAME_SITE"\n\n"); не показывает

Вот код:


new donate[600],string[600];
strcat(donate,"{FFFFFF}На данной странице вы можете узнать имя своего\n");
strcat(donate,"аккаунта, текущее состояние счета, сумму последнего\n");
strcat(donate,"пополнения и общую сумму пополнений счета\n\n");
strcat(donate,"Чтобы воспользоваться счетом нажмите {B83434}'Заказать'{FFFFFF}\n");
format(donate,sizeof(donate),"Для пополнения счета посетите сайт: "NAME_SITE"\n\n");
strcat(donate,"Курс пополнения счета можно посмотреть на сайте "NAME_SITE"/donate.html\n\n");
strcat(donate,"{B83434}Информация:{FFFFFF}\n");
format(string,sizeof(string),"Имя аккаунта: \t\t\t%s\n",PlayerInfo[playerid][pNames]);
strcat(donate,string);
format(string,sizeof(string),"Текущее состояние счета: \t%d рублей\n",PlayerInfo[playerid][pNewDonate]);
strcat(string,"{AFAFAF}\nОстальную информацию можно узнать пополнив счет\n\n");
strcat(donate,string);
ShowPlayerDialog(playerid,5564,DIALOG_STYLE_MSGBOX ,"{BE2D2D}Платные услуги",donate,"Заказать","Отмена");
return true;

ziggi
29.07.2016, 15:11
new donate[600],string[600];
strcat(donate,"{FFFFFF}На данной странице вы можете узнать имя своего\n");
strcat(donate,"аккаунта, текущее состояние счета, сумму последнего\n");
strcat(donate,"пополнения и общую сумму пополнений счета\n\n");
strcat(donate,"Чтобы воспользоваться счетом нажмите {B83434}'Заказать'{FFFFFF}\n");
strcat(donate,"Для пополнения счета посетите сайт: "NAME_SITE"\n\n");
strcat(donate,"Курс пополнения счета можно посмотреть на сайте "NAME_SITE"/donate.html\n\n");
strcat(donate,"{B83434}Информация:{FFFFFF}\n");
format(string,sizeof(string),"Имя аккаунта: \t\t\t%s\n",PlayerInfo[playerid][pNames]);
strcat(donate,string);
format(string,sizeof(string),"Текущее состояние счета: \t%d рублей\n",PlayerInfo[playerid][pNewDonate]);
strcat(string,"{AFAFAF}\nОстальную информацию можно узнать пополнив счет\n\n");
strcat(donate,string);
ShowPlayerDialog(playerid,5564,DIALOG_STYLE_MSGBOX ,"{BE2D2D}Платные услуги",donate,"Заказать","Отмена");
return true;
Размеры, конечно, нужно адекватнее поставить.

Ne_nub
29.07.2016, 15:52
Кхм.. Если это все из-за размеров, то почему показывает текст именно с
strcat(donate,"Для пополнения счета посетите сайт: "NAME_SITE"\n\n"); ?

- - - Добавлено - - -

Размеры изменял, толку 0.

- - - Добавлено - - -

Все разобрался. Проблема решена

DeimoS
29.07.2016, 15:53
Не проще использовать только format?

new donate_string[600] = "{FFFFFF}На данной странице вы можете узнать имя своего\n"; //55
format(donate_string, sizeof(donate_string), "%sаккаунта, текущее состояние счета, сумму последнего\n", donate_string); //52
format(donate_string, sizeof(donate_string), "%sпополнения и общую сумму пополнений счета\n\n", donate_string); //43
format(donate_string, sizeof(donate_string), "%sЧтобы воспользоваться счетом нажмите {B83434}'Заказать'{FFFFFF}\n", donate_string); //64
format(donate_string, sizeof(donate_string), "%sДля пополнения счета посетите сайт: "NAME_SITE"\n\n", donate_string); //38+длина ссылки на сайт
format(donate_string, sizeof(donate_string), "%sКурс пополнения счета можно посмотреть на сайте "NAME_SITE"/donate_string.html\n\n", donate_string);//69+длина ссылки на сайт
format(donate_string, sizeof(donate_string), "%s{B83434}Информация:{FFFFFF}\n", donate_string); //28
format(donate_string, sizeof(donate_string), "%sИмя аккаунта: \t\t\t%s\n", donate_string, PlayerInfo[playerid][pNames]); //18+MAX_PLAYER_NAME
format(donate_string, sizeof(donate_string), "%sТекущее состояние счета: \t%d рублей\n", donate_string, PlayerInfo[playerid][pNewdonate_string]); //34+11
format(donate_string, sizeof(donate_string), "%s{AFAFAF}\nОстальную информацию можно узнать пополнив счет\n\n", donate_string); //58
ShowPlayerDialog(playerid,5564,DIALOG_STYLE_MSGBOX ,"{BE2D2D}Платные услуги",donate_string,"Заказать","Отмена"); //+1 (нуль-символ)
return true;
В конце каждый строки подписал примерное число символов (не учитывал цвет и где-то мог на пару символов ошибиться)

Закрыто
Если появятся ещё вопросы по этому поводу, напиши в личку и открою тему