Перейти к содержанию
Авторизация  
hteppl

Система репортов | Проверка по очереди.

Рекомендуемые сообщения

hteppl

Система заключается в том, что ни один посланный репорт не останется незамеченным. Пока администраторы/хелперы не ответят, он не пропадет.

 

Ко всем new:

enum RepGB
{
    Reptex[130],// Текст который пишет игрок, не превышает 130 символов.
    RepTime,
};
new RepInfo[100][RepGB]; // Максимум послать можно 100 репортов.

Ко всем командам ( если у вас уже есть команда репорта - удалите её ) : 

CMD:report(playerid,params[])
{
    if(PLAYER_DATA[playerid][data_LOGGED] == false) return SendClientMessage(playerid,COLOR_WARNING,"Вы не авторизованы на сервере!");
    ReportDialog(playerid);
	return true;
}

CMD:reports(playerid)
{
	if(PLAYER_DATA[playerid][data_ADMLVL] == 0) return SCM(playerid, -1, "Команда доступна только для администрации!");
	new str[200], string[1500], null = 0;
	foreach(new i:Player)
	{
	    if(GetPVarInt(i, "RepUn") > 0)
	    {
	        null++;
            format(str,sizeof(str),"%s\n{FFFFFF}%i. %s[%d] | Жалоба: %s [%s]",string, null,PLAYER_DATA[i][data_NAME],i,RepInfo[i][Reptex], date("%hh:%ii:%ss", RepInfo[i][RepTime]));
            strcat(string,str);
        }
    }
    strcat(string, "\n\n{FFCC00}Ответить на жалобу: /pm [id] [ответ]");
    if(null == 0) return SendClientMessage(playerid, 0xAA3333AA,"Список репортов пуст");
    return ShowPlayerDialogFix(playerid, 9692, 0, "Репорт",string, "Обновить", "Закрыть");
}

Ко всем stock`ам ( в конец / середину мода ) : 

stock ReportDialog(playerid)
{
	new dtext[700];
	strcat(dtext, "{FFFFFF}Вы собираетесь написать Администрации сервера\n");
	strcat(dtext, "{FFFFFF}Перед тем как отправить сообщение\n");
	strcat(dtext, "{FFFFFF}убедитесь, что один из пунктов помощи не дал Вам ответа на Ваш вопрос\n\n");
	strcat(dtext, "{FF3300}Запрещено:\n");
	strcat(dtext, "{FFFFFF}- флуд, сквернословие, оффтоп\n");
	strcat(dtext, "{FFFFFF}- Выпрашивание игровых ценностей ('дать денег', 'дать лидерку', 'дать права')\n");
	strcat(dtext, "{FFFFFF}- ложные сообщения о нарушении\n\n");
	strcat(dtext, "{FF3300}За нарушение правил Администратор может:\n");
	strcat(dtext, "{FFFFFF}- предупредить (warn)\n");
	strcat(dtext, "{FFFFFF}- отключить от сервера (kick)\n");
	strcat(dtext, "{FFFFFF}- лишить возможности писать (mute)\n");
	strcat(dtext, "{FFFFFF}- заблокировать (ban)\n\n");
	strcat(dtext, "{FFFFFF}Данные правила установлены для всех игроков {339966}rglrp.tk");
	ShowPlayerDialogFix(playerid,dialog_REPORT,DIALOG_STYLE_INPUT,"{FFCC00}Репорт",dtext,"Отправить","Назад");
	return true;
}

Ко всем dialog`ам 

case dialog_REPORT:
{
    if(!response) return true;
    if(response)
    {
        if(strlen(inputtext) < 1 || strlen(inputtext) > 100) return SendClientMessage(playerid,COLOR_WARNING,"Не менее 1 и не более 100 символов!"),ReportDialog(playerid);
        if(GetPVarInt(playerid,"RepUn") > 0) return SendClientMessage(playerid,0xAA3333AA,"Ошибка: Ваша прошлая жалоба ещё не рассмотрена");
        SetPVarInt(playerid,"RepUn",1);
        strmid(RepInfo[playerid][Reptex], inputtext,0,strlen(inputtext),130);
      	RepInfo[playerid][RepTime] = gettime(); 
        SendAdminMessage(0x33FF66FF, "{FFCC00}Поступила новая жалоба от игрока! Рассмотреть жалобы: /reports");
        SendClientMessage(playerid,0x3399feFF, "Ваша жалоба отправлена на рассмотрение!");
    }
}

Команда для ответа на репорт | ( /pm )  :

CMD:pm(playerid,params[])
{
	//ставьте свою переменную админки
    if(PLAYER_DATA[playerid][data_ADMLVL] < 1) return true;
	if(sscanf(params,"us[100]",params[0],params[1])) return SendClientMessage(playerid,COLOR_WARNING,"Используйте: /pm [ид] [текст]");
	if(!IsPlayerConnected(params[0]))return  SendClientMessage(playerid,COLOR_WARNING,"Данного ID нет на сервере!");
	new string[300];
    format(string, sizeof(string), "[Ответ] %s[%d] игроку %s[%d]: {ffffff}%s", PLAYER_DATA[playerid][data_NAME],playerid,PLAYER_DATA[params[0]][data_NAME],params[0],params[1]);
    SendAdminMessage(0xffa141FF, string);
	format(string, sizeof(string), "Администратор %s[%d] ответил вам: {ffffff}%s", PLAYER_DATA[playerid][data_NAME],playerid,params[1]);
    SendClientMessage(params[0], 0xffa141FF, string);
    if(strlen(RepInfo[params[0]][Reptex]))
    {
    	format(string, sizeof(string), "На вашу жалобу: {FFFFFF}%s", RepInfo[params[0]][Reptex]);
    	SendClientMessage(params[0], 0xffa141FF, string);
	}
	strmid(RepInfo[playerid][Reptex], "",0,0,0);
    DeletePVar(params[0], "RepUn");
    return true;
}

Найдено на просторах интернета, оформление моё.

 

Автор : неизвестен.

 

P.S: Проблемы с табуляцией на сайте, надо выровнять.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
SCRIPTMAN

Можно доработать.


null = 0;

а зачем это? ты проверял? я может туплю просто.

можно просто создать переменную null без присваивания значения

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Marvellous

,У меня почему то только 1 игрок и все,хотя написало человека 2-3

 

И если оставить эту жалобу,то после когда выйдешь и зайдешь(админ) то эта жалоба пропадает)

Изменено пользователем Marvellous

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Nike123123

@Marvellous, Тут нужна еще работа с БД, что бы не пропадали жалобы\вопросы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.