PDA

Просмотр полной версии : [Вопрос] Репорт



GoJIoBoJIoMkA
12.01.2019, 16:02
Здравствуйте!
Когда игрок пишет в репорт, его сообщения удваиваются. Например он написал вопрос в репорт "Где взять ган", то это сообщение придёт 2 раза подряд!
Вот сток отвечающий за это!

stock AllVidem(color, const string_massive[] , level)
{
tforeach(i)
{
if(!IsPlayerConnected(i)) break;
if(PlayerInfo[i][bAdmin] >= level) SendClientMessage(i, color, string_massive);
if(PlayerInfo[i][pHelper] >= level) SendClientMessage(i, color, string_massive);
}
return 1;
}
Я пробовал его сделать вот так, но тогда игроки видят репорт тоже!

stock AllVidem(color, const string_massive[] , level)
{
tforeach(i)
{
if(!IsPlayerConnected(i)) break;
if(PlayerInfo[i][bAdmin] >= level) continue;
if(PlayerInfo[i][pHelper] >= level) continue;
SCM(color, const string_massive[] level)
}
return 1;
}
помогите пожалуйста с этим разобраться!

Nexius_Tailer
12.01.2019, 16:30
Твой первый вариант:
1. Обрывал весь цикл при нахождении хотя бы одного пустого слота
2. Имея два условия if/if (а не if/else if или if(условие || условие) с одним действием), выполнялись одинаковые действия дважды, если оба условия совпадали

Исправленный первый вариант:

stock AllVidem(color, const string_massive[] , level)
{
tforeach(i)
{
if(!IsPlayerConnected(i)) continue;
if(PlayerInfo[i][bAdmin] >= level || PlayerInfo[i][pHelper] >= level) SendClientMessage(i, color, string_massive);
}
return 1;
}

GoJIoBoJIoMkA
13.01.2019, 13:20
Ваш вариант работает, но репорт теперь и игроки видят!
Может тут делюга какая то?

case 10:
{
if(!response) return cmd::mm(playerid);
if(!strlen(inputtext)) return SPD(playerid,10,DIALOG_STYLE_INPUT,"0x8813E7FF Связь с администрацией",""WHITE"Вы собираетесь задать вопрос / подать жалобу администрации / хелперам сервера.\n\nПожалуйста, не грубите, и соблюдайте адекватность.\nОписывайте жалобу / вопрос, четко и ясно.","Далее","Назад");
if(PlayerInfo[playerid][pMuteTime]) return SendClientMessage(playerid, -1, ""#net"У Вас бан чата!");
if(GetPVarInt(playerid, "anti_flood_report") > gettime()) return SendClientMessage(playerid, -1,""#net"Писать в репорт можно один раз в минуту.");
string="";
format(string, MAX_STR, "Обращение от %s[%d]{FFCD00}: %s", PlayerInfo[playerid][pNames], playerid, (inputtext));
AllVidem(0xff4f00ff, string, 1);
SendClientMessage(playerid,0x269BD8FF, string);
SendClientMessage(playerid,0x269BD8FF,"Ожидайте, в ближайшее время Вам ответит администратор / помощник сервера.");
SetPVarInt(playerid,"anti_flood_report",gettime()+60);
return 1;
}

Nexius_Tailer
13.01.2019, 20:33
В коде нет причины, чтобы это могли видеть все игроки, если конечно все игроки не имеют PlayerInfo[plyaierid][bAdmin] или PlayerInfo[plyaierid][pHelper] больший либо равный 1.

GoJIoBoJIoMkA
20.01.2019, 14:33
Тема закрыта!