Проблема с репортом

pikni4okkk

Новичок
Автор темы
10
0
Здравствуйте пользователи форума Blast.HK, на днях нашёл на просторах интернета мод под названием "Heavily". Мод нормальный все баги которые были возможно пофиксить, я пофиксил, кроме одного. Баг с репортом, репорт видят все игроки! Я не понимаю как в данном случаи сделать проверку на администратора, чтобы только админы видели репорт, а не все игроки на сервере.
Код:
        {
            if(!response) return true;
            if(strlen(inputtext) < 2 || strlen(inputtext) > 60) return cmd_report(playerid);
            //if(ReportON[playerid]) return SendClientMessage(playerid, COLOR_GREY, "Ваша прошлая жалоба ещё не рассмотрена");

            ReportON[playerid] = true;
            ReportMessage[playerid][0] = EOS;
            format(ReportMessage[playerid], 128, inputtext);
         
            static const
             report_mes[] = "[A] Сообщение от игрока %s[%i]: {FFFFFF}%s"; // Как сделать этот текст видимым только для администраторов?
            //player_mes[] = "[A] Сообщение от игрока %s[%i]: {FFFFFF}%s";
            new str_[sizeof(report_mes) + 24 + 5 + 144];
            format(str_, sizeof(str_), report_mes, GetName(playerid), playerid, inputtext);
            SendAdminMessage(0xE65757FF, str_);
            SendAdminMessage(COLOR_RED, "Поступила жалоба/вопрос, для ответа введите {ffffff}/replist");
        //    format(str_, sizeof(str_), player_mes, GetName(playerid), playerid, inputtext);
        //    SendClientMessage(playerid, 0xE65757FF, str_);
            SendClientMessage(playerid, 0xFACC2Eaa, "Ожидайте, в ближайшее время Вам ответит администратор.");

            //if(pInfo[playerid][pVip] > 0) ReportTime[playerid]=gettime()+60;
            //else ReportTime[playerid]=gettime()+120;

            //if(Report) TotalReport++;
            TotalReport++;
        }
 

f0Re3t

Poh production
Друг
876
807
а причем тут настройки (судя по названию переменной)? скинь любую команду где есть проверка на адм
 
  • Нравится
Реакции: pikni4okkk

pikni4okkk

Новичок
Автор темы
10
0
а причем тут настройки (судя по названию переменной)? скинь любую команду где есть проверка на адм
Код:
CMD:goto(playerid, params[])
{
    if(PlayerInfo[playerid][bAdmin] < 1) return SendClientMessage(playerid, -1, ""#NET"Вы не уполномочены");
    if(sscanf(params,"d",params[0])) return SendClientMessage(playerid, COLOR_WHITE, ""#INFO"/g(oto) [id игрока]");
    if (!IsPlayerConnected(params[0])) return SendClientMessage(playerid, -1, ""#NET"Человек не найден!");
    if(GetPlayerState(params[0]) != 1 && GetPlayerState(params[0]) != 2 && GetPlayerState(params[0]) != 3) return SendClientMessage(playerid, COLOR_GRAD1, "Игрок не вступил в игру!");
    if(GetPlayerState(params[0]) == PLAYER_STATE_SPECTATING) return SendClientMessage(playerid, COLOR_GRAD1, "Админ в режиме наблюдения");
     if(GetPVarInt(params[0],"toggotome") && PlayerInfo[playerid][bAdmin] <= 12) return SCM(playerid, -1,"Администратор запретил к себе телепорт!");
    new Float:plocx, Float:plocy, Float:plocz;
    GetPlayerPos(params[0], plocx, plocy, plocz);
    if (GetPlayerState(playerid) == PLAYER_STATE_DRIVER)
    {
        new tmpcar = VehicleEnters[playerid];
        AC_SetVehiclePos(tmpcar, plocx, plocy+4, plocz);
    }
    else
    {
        SetPlayerPosEx(playerid,plocx,plocy+2, plocz);
        SetPlayerVirtualWorld(playerid, GetPlayerVirtualWorld(params[0]));
        SetPlayerInterior(playerid, GetPlayerInterior(params[0]));
    }
    SendClientMessage(playerid, COLOR_WHITE, "Вы были телепортированы!");
    return 1;
}
 

f0Re3t

Poh production
Друг
876
807
C++:
stock SendAdminMessage(color, const message[], lvl = 1)
{
    tforeach(i)
    {
        if(IsPlayerConnected(i) && PlayerInfo[i][pID])
        {

            if(PlayerInfo[i][bAdmin] >= lvl) SendClientMessage(i, color, message);
        }
    }
}
 
  • Нравится
Реакции: pikni4okkk и Tonys[15]

wdwwdwwd

Новичок
2
0
Что за быдло код?
tForeach я так понимаю это какой макрос что бы быдлокодить.
Зачем IsPlayerConnected и Id аккаунта?? Если foreach берет законекченый игроков.
Pawn:
stock SendAdminMessage(color, const message[])
{
    foreach(new i:Player)
    {
        if(PlayerInfo[i][bAdmin] >= 1) SendClientMessage(i, color, message);
    }
    return 0;
}
 

repugnantbytheway

Известный
140
38
Что за быдло код?
tForeach я так понимаю это какой макрос что бы быдлокодить.
Зачем IsPlayerConnected и Id аккаунта?? Если foreach берет законекченый игроков.
Pawn:
stock SendAdminMessage(color, const message[])
{
    foreach(new i:Player)
    {
        if(PlayerInfo[i][bAdmin] >= 1) SendClientMessage(i, color, message);
    }
    return 0;
}
https://pro-pawn.ru/showthread.php?5747, познакомься. Не смотря на то, что Кортез предоставил замеры скорости (где в итоге победил tforeach против Vectorial и foreach от Y_Less), для тебя это "быдлокод".

Если foreach берет законекченый игроков.
А tforeach по твоему что делает?

Ко всему этому твоё решение автору не подойдёт, у него есть некая проверка на pID, скорее всего на зарегистрированный аккаунт.

В итоге и IsPlayerConnected в цикле не нужен, ибо tforeach предусматривает это.
C:
stock SendAdminMessage(color, const message[], lvl = 1)
{
    tforeach(i)
    {
        if(PlayerInfo[i][pID])
        {
            if(PlayerInfo[i][bAdmin] >= lvl) SendClientMessage(i, color, message);
        }
    }
}
 

f0Re3t

Poh production
Друг
876
807
Что за быдло код?
tForeach я так понимаю это какой макрос что бы быдлокодить.
Зачем IsPlayerConnected и Id аккаунта?? Если foreach берет законекченый игроков.
Pawn:
stock SendAdminMessage(color, const message[])
{
    foreach(new i:Player)
    {
        if(PlayerInfo[i][bAdmin] >= 1) SendClientMessage(i, color, message);
    }
    return 0;
}
https://pro-pawn.ru/showthread.php?5747, познакомься. Не смотря на то, что Кортез предоставил замеры скорости (где в итоге победил tforeach против Vectorial и foreach от Y_Less), для тебя это "быдлокод".


А tforeach по твоему что делает?

Ко всему этому твоё решение автору не подойдёт, у него есть некая проверка на pID, скорее всего на зарегистрированный аккаунт.

В итоге и IsPlayerConnected в цикле не нужен, ибо tforeach предусматривает это.
C:
stock SendAdminMessage(color, const message[], lvl = 1)
{
    tforeach(i)
    {
        if(PlayerInfo[i][pID])
        {
            if(PlayerInfo[i][bAdmin] >= lvl) SendClientMessage(i, color, message);
        }
    }
}
а откуда вам обоим значить что у автора tforeach от тракера? может это обычная самописное говно, кое встречается в 95% паблик модах