PDA

Просмотр полной версии : [Вопрос] Копируется игрок в команде /list.



kala4iks
22.01.2017, 20:25
Добрый вечер, столкнулся с такой проблемой сделал команду Члены фракции онлайн работает вроде правильно, но есть 1 баг если входить в нее еще раз а потом еще раз то каждый раз она копирует игрока как исправить данный баг?


http://rgho.st/69McGsxWQ/thumb.png (http://rgho.st/69McGsxWQ.view)


CMD:list(playerid)
{
if(Player[playerid][pMember] == 0)return send(playerid,0xFF0000AA,"[ОШИБКА] {FFFFFF}Вы не состоите во фракции.");
foreach(Player,i)
{
if(!IsPlayerConnected(i)) continue;
new string[64];
if(Player[i][pMember] == Player[playerid][pMember])
{
if(Player[i][pLeader] > 0)
{
f(string,"%s[%d]: (Лидер)\n",sendername(i),i);
strcat(stringsd,string);
}
else if(Player[i][pZam] > 0)
{
f(string,"%s[%d]: (Зам)\n",sendername(i),i);
strcat(stringsd,string);
}
else if(Player[i][pMember] > 0)
{
f(string,"%s[%d], Ранг: %d, Выговоры: %d\n",sendername(i),i,Player[i][pRank],Player[i][pTWarns]);
strcat(stringsd,string);
}
}
}
return SPD(playerid,9997,DIALOG_STYLE_LIST,"{33CCFF}Члены фракции онлайн:",stringsd,"ОК","");
}

qwezert
22.01.2017, 20:44
stringsd - это что за строка?

Seviel
22.01.2017, 21:35
stringsd - Глобальная переменная, замени на локальную или чисти её в конце(можешь в начале, это твой фетиш).

Long-
22.01.2017, 21:46
stringsd[0] = EOS;
В начало функции, либо как сказали выше создавай локальную.

vovandolg
23.01.2017, 12:38
foreach(Player,i)
{
if(!IsPlayerConnected(i)) continue;


Можно было не ставить проверку игрока на подключение, так как в foreach уже она встроена.

kala4iks
23.01.2017, 14:20
stringsd[0] = EOS;
В начало функции, либо как сказали выше создавай локальную.

Помогло. Спасибо.