Баг со стоком
#1

Проблема в следующем, есть сток, в этом стоке большой диалог, он не открывается если его закинуть в конец мода, а если уменьшить сам диалог , то открывается, если этот сток запихнуть в середину мода, то он будет открываться, но когда производятся какие-либо действия с игроков, например кик, в чат ему выводятся строки из диалога, как быть, если этот диалог много где вызывается
Reply
#2

сток)
Почему 'сток' ты пишешь, легче назвать функция же или как?)
Скидывай сюда эту ф-ию например.
Reply
#3

PHP код:
stock usermenu(playerid)
{
    new 
ap0[50],ap1[50],ap2[50],ap3[50],ap4[50],ap5[50],ap6[50],ap7[50],ap8[50],ap9[50],ap10[50],ap11[50],ap12[50],ap13[50],ap14[50]
    ,
ap15[50],ap16[50],ap17[50] ,ap18[50],ap19[50],ap20[50],ap21[50],ap22[50],ap23[65],ap24[65],ap25[65],ap26[65],ap27[65],ap28[50],ap29[50];
    if(
PlayerInfo[playerid][user] == 18){format(ap0sizeof(ap0), "{FFFFFF}Юзер 1\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 1){format(ap1sizeof(ap1), "{FFFFFF}Юзер 2\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 2){format(ap2sizeof(ap2), "{FFFFFF}Юзер 3\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 3){format(ap3sizeof(ap3), "{FFFFFF}Юзер 4\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 4){format(ap4sizeof(ap4), "{FFFFFF}Юзер 5\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 5){format(ap5sizeof(ap5), "{FFFFFF}Юзер 6\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 6){format(ap6sizeof(ap6), "{FFFFFF}Юзер 7\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 7){format(ap7sizeof(ap7), "{FFFFFF}Юзер 8\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 8){format(ap8sizeof(ap8), "{FFFFFF}Юзер 9\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 9){format(ap9sizeof(ap9), "{FFFFFF}Юзер 10\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 10){format(ap10sizeof(ap10), "{FFFFFF}Юзер 11\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 11){format(ap11sizeof(ap11), "{FFFFFF}Юзер 12\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 12){format(ap12sizeof(ap12), "{FFFFFF}Юзер 13\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 13){format(ap13sizeof(ap13), "{FFFFFF}Юзер 14\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 14){format(ap14sizeof(ap14), "{FFFFFF}Юзер 15\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 15){format(ap15sizeof(ap15), "{FFFFFF}Юзер 16\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 16){format(ap16sizeof(ap16), "{FFFFFF}Юзер 17\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 17){format(ap17sizeof(ap17), "{FFFFFF}Юзер 18\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 19){format(ap18sizeof(ap18), "{FFFFFF}Юзер 19\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 20){format(ap19sizeof(ap19), "{FFFFFF}Юзер 20\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 21){format(ap20sizeof(ap20), "{FFFFFF}Юзер 21\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 22){format(ap21sizeof(ap21), "{FFFFFF}Юзер 22\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 23){format(ap22sizeof(ap22), "{FFFFFF}Юзер 23\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 24){format(ap23sizeof(ap23), "{FFFFFF}Юзер 24\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 25){format(ap24sizeof(ap24), "{FFFFFF}Юзер 25\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 26){format(ap25sizeof(ap25), "{FFFFFF}Юзер 26\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 27){format(ap26sizeof(ap26), "{FFFFFF}Юзер 27\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 28){format(ap27sizeof(ap27), "{FFFFFF}Юзер 28\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 29){format(ap28sizeof(ap28), "{FFFFFF}Юзер 29\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] == 30){format(ap29sizeof(ap29), "{FFFFFF}Юзер 30\t{00FF00}[Задействован]");}
    if(
PlayerInfo[playerid][user] != 18){format(ap0sizeof(ap0), "{FFFFFF}Юзер 1\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 1){format(ap1sizeof(ap1), "{FFFFFF}Юзер 2\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 2){format(ap2sizeof(ap2), "{FFFFFF}Юзер 3\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 3){format(ap3sizeof(ap3), "{FFFFFF}Юзер 4\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 4){format(ap4sizeof(ap4), "{FFFFFF}Юзер 5\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 5){format(ap5sizeof(ap5), "{FFFFFF}Юзер 6\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 6){format(ap6sizeof(ap6), "{FFFFFF}Юзер 7\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 7){format(ap7sizeof(ap7), "{FFFFFF}Юзер 8\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 8){format(ap8sizeof(ap8), "{FFFFFF}Юзер 9\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 9){format(ap9sizeof(ap9), "{FFFFFF}Юзер 10\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 10){format(ap10sizeof(ap10), "{FFFFFF}Юзер 11\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 11){format(ap11sizeof(ap11), "{FFFFFF}Юзер 12\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 12){format(ap12sizeof(ap12), "{FFFFFF}Юзер 13\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 13){format(ap13sizeof(ap13), "{FFFFFF}Юзер 14\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 14){format(ap14sizeof(ap14), "{FFFFFF}Юзер 15\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 15){format(ap15sizeof(ap15), "{FFFFFF}Юзер 16\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 16){format(ap16sizeof(ap16), "{FFFFFF}Юзер 17\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 17){format(ap17sizeof(ap17), "{FFFFFF}Юзер 18\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 19){format(ap18sizeof(ap18), "{FFFFFF}Юзер 19\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 20){format(ap19sizeof(ap19), "{FFFFFF}Юзер 20\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 21){format(ap20sizeof(ap20), "{FFFFFF}Юзер 21\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 22){format(ap21sizeof(ap21), "{FFFFFF}Юзер 22\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 23){format(ap22sizeof(ap22), "{FFFFFF}Юзер 23\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 24){format(ap23sizeof(ap23), "{FFFFFF}Юзер 24\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 25){format(ap24sizeof(ap24), "{FFFFFF}Юзер 25\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 26){format(ap25sizeof(ap25), "{FFFFFF}Юзер 26\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 27){format(ap26sizeof(ap26), "{FFFFFF}Юзер 27\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 28){format(ap27sizeof(ap27), "{FFFFFF}Юзер 28\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 29){format(ap28sizeof(ap28), "{FFFFFF}Юзер 29\t{FF0000}[Отключен]");}
    if(
PlayerInfo[playerid][user] != 30){format(ap29sizeof(ap29), "{FFFFFF}Юзер 30\t{FF0000}[Отключен]");}
       new 
strm0[18],strm1[52],strm2[52],strm3[52],strm4[52],strm5[52],strm6[52],strm7[52],strm8[52],strm9[52],strm10[52],strm11[52],strm12[52],strm13[52],strm14[52]
    ,
strm15[52],strm16[52],strm17[52],strm18[52],strm19[52],strm20[52],strm21[52],strm22[52],strm23[52],strm24[65],strm25[65],strm26[65],strm27[65],strm28[65],strm29[52],strm30[52],strm31[1450];
    
format(strm0sizeof(strm0),"Ñòàíöèÿ\tÑòàòóñ\n");
    
format(strm1sizeof(strm1),"%s\n",ap0);
    
format(strm2sizeof(strm2),"%s\n",ap1);
    
format(strm3sizeof(strm3),"%s\n",ap2);
    
format(strm4sizeof(strm4),"%s\n",ap3);
    
format(strm5sizeof(strm5),"%s\n",ap4);
    
format(strm6sizeof(strm6),"%s\n",ap5);
    
format(strm7sizeof(strm7),"%s\n",ap6);
    
format(strm8sizeof(strm8),"%s\n",ap7);
    
format(strm9sizeof(strm9),"%s\n",ap8);
    
format(strm10sizeof(strm10),"%s\n",ap9);
    
format(strm11sizeof(strm11),"%s\n",ap10);
    
format(strm12sizeof(strm12),"%s\n",ap11);
    
format(strm13sizeof(strm13),"%s\n",ap12);
    
format(strm14sizeof(strm14),"%s\n",ap13);
    
format(strm15sizeof(strm15),"%s\n",ap14);
    
format(strm16sizeof(strm16),"%s\n",ap15);
    
format(strm17sizeof(strm17),"%s\n",ap16);
    
format(strm18sizeof(strm18),"%s\n",ap17);
    
format(strm19sizeof(strm19),"%s\n",ap18);
    
format(strm20sizeof(strm20),"%s\n",ap19);
    
format(strm21sizeof(strm21),"%s\n",ap20);
    
format(strm22sizeof(strm22),"%s\n",ap21);
    
format(strm23sizeof(strm23),"%s\n",ap22);
    
format(strm24sizeof(strm24),"%s\n",ap23);
    
format(strm25sizeof(strm25),"%s\n",ap24);
    
format(strm26sizeof(strm26),"%s\n",ap25);
    
format(strm27sizeof(strm27),"%s\n",ap26);
    
format(strm28sizeof(strm28),"%s\n",ap27);
    
format(strm29sizeof(strm29),"%s\n",ap28);
    
format(strm30sizeof(strm30),"%s\n",ap29);
    
format(strm31sizeof(strm31),"%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s",strm0,strm1,strm2,strm3,strm4,strm5,strm6,strm7,strm8,strm9,
    
strm10,strm11,strm12,strm13,strm14,strm15,strm16,strm17,strm18,strm19,strm20,strm21,strm22,strm23,strm24,strm25,strm26,strm27,strm28,strm29,strm30,strm31);//%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s%s
    
ShowPlayerDialog(playerid,3351,DIALOG_STYLE_TABLIST_HEADERS,"{FF0000}Юзер",strm31,"Выбрать","Назад"); 
Reply
#4

Говнокод детектед!
Reply
#5

Жесть, тут весь код нужно переписывать...
Reply
#6

Может подскажете как правильно надо использовать?
Reply
#7

А топик стартер оказывается ебаный индусский говно-кодер.
Да, конечно ему, в отличие от некоторых (но все мы знаем кто) сумел привести код, за что "+". Но за логику надо карать во все щели. И упускать возможность унизить за грубые подходы - грех, в ином случае на путь праведный не направится.

А дабы не быть голословным приведу код (по его логике! [p.s. для точно его логики - раскоментировать 2 строки подряд], но это не значит, что это то, что он хотел), но не индусский.
Код:
new strm31[39 * 31 + 1]; // = strlen("{FFFFFF}Юзер 30\t{00FF00}[Задействован]\n") * 31 + NULL_CHAR
stock usermenu(playerid)
{
	new strm0[40], n;
	format(strm31,20,"Noaioey\tNoaoon\n");
	for(new m = 1; m <= 30; m++)
	{
	    n = m;
/*	    if(m==18) { n = 1; }
	    else if(m<18){n=m+1;}*/
		if(PlayerInfo[playerid][user] != n) {
			format(strm0, sizeof(strm0), "{FFFFFF}Юзер %d\t{FF0000}[Отключен]\n", n);
		}
		else {
			format(strm0, sizeof(strm0), "{FFFFFF}Юзер %d\t{00FF00}[Задействован]\n", n);
		}
		strcat(strm31,strm0,sizeof(strm31));
	}
	ShowPlayerDialog(playerid,3351,DIALOG_STYLE_TABLIST_HEADERS,"{FF0000}Юзер",strm31,"Выбрать","Назад");
}
1) большие массивы лучше выносить за пределы функций
2) ... N-1) по коду
* множество переменных, в т.ч. массивы внутри функций -> оверхип
* множество переменных просто логически не нужно.

N) откуда берётся переменная user ? (не объявлена у ТС)
N+1) по коду видно что при его логике user - статична во время исполнения usermenu, что приведёт к интересному говну.
N+2) Нет серьёзной мотивации (и комментариев) зачем мудрить с порядком в условиях.
N+3) strm31 у него была объявлена с размером значительно больше 1171 ячеек.
Reply
#8

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
1) большие массивы лучше выносить за пределы функций
Если целью является экономия стека, то массив можно объявить в функции как static.
Reply
#9

че вы мне свою оптимизацию пихаете, мне нужно разобраться че со стоком, попробовал твоим методом прогнать, всё так же , херь происходит, уменьшаешь цикл , всё гуд, можно закрывать, сам разберусь, говном меня только полили
Reply
#10

Quote:
Originally Posted by w33
Посмотреть сообщение
че вы мне свою оптимизацию пихаете, мне нужно разобраться че со стоком, попробовал твоим методом прогнать, всё так же , херь происходит, уменьшаешь цикл , всё гуд, можно закрывать, сам разберусь, говном меня только полили
Тяжелый случай.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)