Доброго времени суток, пользователи Pawn-Wiki
Почему лучше использовать эту систему репорта и чем она лучше?
Немного о системе:
И так пожалуй начнём!
В самое начало мода(ко всем new)
new RepMessages[MAX_PLAYERS][128];
new bool:InsRep[MAX_PLAYERS];
new RepTimeMessages[MAX_PLAYERS];
new RepId[MAX_PLAYERS];
Ко всем командам
CMD:report(playerid, params[])
{
new result[150],string[200];
if(sscanf(params,"s[150]",result)) return SendClientMessage(playerid, -1, "Используй: /report [id нарушителя и суть нарушения/вопрос]");
if(InsRep[playerid] == true) return SCM(playerid,-1,"Вы уже отправляли жалобу!");
SendClientMessage(playerid,-1,"{bb2222}Ваша жалоба была отправлена на рассмотрение! В ближайшее время Вам ответит Администратор.");
format(string,sizeof(string),"{bb2222}[Жалоба] от %s[%d]: {FFFFFF}%s",PN(playerid),playerid,result);
SendTeamMessage(TEAMADMIN,-1,string);//Ваш чат администраторов
format(AddMessages[playerid],128,"%s",result);
InsRep[playerid] = true;
return true;
}
CMD:replist(playerid, params[])
{
if(!IsAdmins(playerid)) return SendClientMessage(playerid,-1,"Только для admins team");//проверка на админку
new bstr[1024];
for(new id;id<MAX_PLAYERS;id++)
{
if(RepTimeMessages[id] > 0 ) format(bstr,sizeof(bstr),"%s Отправитель: %s %dc\n",bstr,PN(id),gettime() - RepTimeMessages[id]);
}
if(strlen(bstr) > 0) ShowPlayerDialog(playerid,556,2,"Список жалоб",bstr,"Выбрать","Закрыть"); else ShowPlayerDialog(playerid,0,0,"Список жалоб","На данный момент сообщений нет","Закрыть","");
return true;
}
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
case 556:
{
if(response)
{
new num;
for(new i;i<MAX_PLAYERS;i++)
{
if(RepTimeMessages > 0)
{
if(num == listitem)
{
new time = gettime() - RepTimeMessages;
RepId[playerid] = i;
RepTimeMessages[RepId[playerid]] = 0;
format(string,sizeof(string),"{FFFFFF}Жалоба от {FFD700}%s, спустя %dc.\n{FFFFFF}Сообщение:\t{33AA33}%s\n\n{FFFFFF}Введите ответ на жалобу.",PN(i),time,RepMessages);
ShowPlayerDialog(playerid,557,1,"Жалоба",string,"Отправить"
,"Отклонить");
break;
}
num ++;
}
}
}
return true;
}
case 557:
{
if(response)
{
if(strlen(inputtextsave) < 6 || strlen(inputtextsave) > 60) return SendClientMessage(playerid,COLOR_GREY,"[Ошибка] {FFFFFF}Ответ должен состоять от 6 до 60 символов!");
new drt[400];
format(drt,sizeof(drt),"Ответ от Администратора: %s",inputtext);
SendClientMessage(AddId[playerid],-1,drt);
format(drt,sizeof(drt),"Ваше обращение: %s",AddMessages[AddId[playerid]]);
SendClientMessage(AddId[playerid],-1,drt);
AddMessages[AddId[playerid]] = 0;
InsRep[AddId[playerid]] =false;
SendClientMessage(playerid,-1,"Ответ отправлен!");
}
else
{
AddTimeMessages[AddId[playerid]] = 0;
InsRep[AddId[playerid]] =false;
SendClientMessage(playerid,-1,"[Информация] {FFFFFF}Вы отклонили жалобу!");
}
}
В public OnPlayerDisconnect(playerid, reason)
AddTimeMessages[AddId[playerid]] = 0;
InsRep[AddId[playerid]] =false;
На этом всё, систему можете доработать сами!
Почему лучше использовать эту систему репорта и чем она лучше?
- Каждая жалоба игрока будет рассмотрена.
- Игрок не получит на одну жалобу/вопрос по два-три ответа
- Игроку будет предоставлен ответ и текст его жалобы. Иногда Администрация не успевает отвечать.
Немного о системе:
- Администрация сможет посмотреть во-сколько была отправлена жалоба
- Если жалоба будет некорректна Администратор сможет закрыть её
- Как Администратор начнет рассматривать жалобу она пропадает со списка жалоб
- Если игрок принудительно завершит игровой процесс(выйдет с игры) жалоба пропадает со списка.
И так пожалуй начнём!
В самое начало мода(ко всем new)
new RepMessages[MAX_PLAYERS][128];
new bool:InsRep[MAX_PLAYERS];
new RepTimeMessages[MAX_PLAYERS];
new RepId[MAX_PLAYERS];
Ко всем командам
CMD:report(playerid, params[])
{
new result[150],string[200];
if(sscanf(params,"s[150]",result)) return SendClientMessage(playerid, -1, "Используй: /report [id нарушителя и суть нарушения/вопрос]");
if(InsRep[playerid] == true) return SCM(playerid,-1,"Вы уже отправляли жалобу!");
SendClientMessage(playerid,-1,"{bb2222}Ваша жалоба была отправлена на рассмотрение! В ближайшее время Вам ответит Администратор.");
format(string,sizeof(string),"{bb2222}[Жалоба] от %s[%d]: {FFFFFF}%s",PN(playerid),playerid,result);
SendTeamMessage(TEAMADMIN,-1,string);//Ваш чат администраторов
format(AddMessages[playerid],128,"%s",result);
InsRep[playerid] = true;
return true;
}
CMD:replist(playerid, params[])
{
if(!IsAdmins(playerid)) return SendClientMessage(playerid,-1,"Только для admins team");//проверка на админку
new bstr[1024];
for(new id;id<MAX_PLAYERS;id++)
{
if(RepTimeMessages[id] > 0 ) format(bstr,sizeof(bstr),"%s Отправитель: %s %dc\n",bstr,PN(id),gettime() - RepTimeMessages[id]);
}
if(strlen(bstr) > 0) ShowPlayerDialog(playerid,556,2,"Список жалоб",bstr,"Выбрать","Закрыть"); else ShowPlayerDialog(playerid,0,0,"Список жалоб","На данный момент сообщений нет","Закрыть","");
return true;
}
В public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
case 556:
{
if(response)
{
new num;
for(new i;i<MAX_PLAYERS;i++)
{
if(RepTimeMessages > 0)
{
if(num == listitem)
{
new time = gettime() - RepTimeMessages;
RepId[playerid] = i;
RepTimeMessages[RepId[playerid]] = 0;
format(string,sizeof(string),"{FFFFFF}Жалоба от {FFD700}%s, спустя %dc.\n{FFFFFF}Сообщение:\t{33AA33}%s\n\n{FFFFFF}Введите ответ на жалобу.",PN(i),time,RepMessages);
ShowPlayerDialog(playerid,557,1,"Жалоба",string,"Отправить"
,"Отклонить");
break;
}
num ++;
}
}
}
return true;
}
case 557:
{
if(response)
{
if(strlen(inputtextsave) < 6 || strlen(inputtextsave) > 60) return SendClientMessage(playerid,COLOR_GREY,"[Ошибка] {FFFFFF}Ответ должен состоять от 6 до 60 символов!");
new drt[400];
format(drt,sizeof(drt),"Ответ от Администратора: %s",inputtext);
SendClientMessage(AddId[playerid],-1,drt);
format(drt,sizeof(drt),"Ваше обращение: %s",AddMessages[AddId[playerid]]);
SendClientMessage(AddId[playerid],-1,drt);
AddMessages[AddId[playerid]] = 0;
InsRep[AddId[playerid]] =false;
SendClientMessage(playerid,-1,"Ответ отправлен!");
}
else
{
AddTimeMessages[AddId[playerid]] = 0;
InsRep[AddId[playerid]] =false;
SendClientMessage(playerid,-1,"[Информация] {FFFFFF}Вы отклонили жалобу!");
}
}
В public OnPlayerDisconnect(playerid, reason)
AddTimeMessages[AddId[playerid]] = 0;
InsRep[AddId[playerid]] =false;
На этом всё, систему можете доработать сами!