/report > Отправить сообщение в репорт - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: [CM]OlegEhtler, Getbackthere, Phoenixxx_Czar  
/report > Отправить сообщение в репорт
roote Дата: Пятница, 24.10.2014, 19:37 | Сообщение # 1
Боец
Сообщений: 207
Статус: Offline
Делать было не чего и я решил написать простенькую команду /report для любого сервера (лично я писал для своего DM сервера). Можно использовать для сервера с 0. Что-же приступим.
Ко всем forward
Код
forward AdminMessage(color,const string[],level);

Ниже опишу, за что будет отвечать данный паблик
Дальше нам необходимо создать команду, которая будет вызывать диалог, для сообщения в репорт.
Ищем public OnPlayerCommandText(playerid, cmdtext[])
И создаем команду
Код
if (strcmp("/report", cmdtext, true, 10) == 0)
  {
   ShowPlayerDialog(playerid, 102, DIALOG_STYLE_INPUT, "Репорт", "Вы собираетесь отправить сообщение Администрации сервера\nВаше сообщение должно должно иметь точный и выражаемый смысл сообщения\nВведите свой вопрос/жалобу в окно ниже", "Отправить", "Отмена");
  }

Команда создана. Но работать она не будет, по сколько нужно создать диалог, который будет вызывать данный диалог.
Ищем паблик: public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
Теперь добавим:
Код
case 102:
   {
    if(response)
    {
     if(!strlen(inputtext))return ShowPlayerDialog(playerid, 102, DIALOG_STYLE_INPUT, "Репорт", "Вы собираетесь отправить сообщение Администрации сервера\nВаше сообщение должно должно иметь точный и выражаемый смысл сообщения\nВведите свой вопрос/жалобу в окно ниже", "Отправить", "Отмена");
     new sendername[MAX_PLAYER_NAME];
     GetPlayerName(playerid, sendername, sizeof(sendername));
     format(string, sizeof(string), "Ваше сообщение успешно было отправлено", sendername, playerid, (inputtext));
     SendClientMessage(playerid, COLOR_ORANGE, string);
     format(string, sizeof(string), "[A] Жалоба от %s[%d]: %s", sendername, playerid, (inputtext));
     ABroadCast(0xA85400AA, string, 1);
     return 1;
    }
    else
    {
     SendClientMessage(playerid, COLOR_BLUE, "Вы отказались от отправления сообщения Администрации");
    }
   }

Вот и все. Но теперь осталось, выводить сообщения игрока в чат, для администрации.
Мы уже создали forward AdminMessage(color,const string[],level);
Теперь создадим паблик:
Код
stock AdminMessage(color,const string[],level)
{
  for(new i = 0; i < MAX_PLAYERS; i++)
  {
   if(IsPlayerConnected(i))
   {
    if(Player[i][pAdmin] >= level)
    {
     SendClientMessage(i, color, string);
    }
   }
  }
  return true;
}

Вот вроде и все. Если у вас будут ошибки, или проблемы при компилирование пишите в эту тему, постараюсь помочь.
P.S Данная тема создана для новичков


--> Как заработать деньги на проекте Samp Rp | http://cheat-master.ru/forum/14-413833-1-17-1
--> 312 день на сайте | 26 марта (2015 год)
Chester_Master Дата: Воскресенье, 02.11.2014, 03:51 | Сообщение # 2
Бывалый
Сообщений: 339
Статус: Offline
Навряд-ли кто то возьмет себе команду, без оптимизации.
Fake{yl] Дата: Воскресенье, 02.11.2014, 08:51 | Сообщение # 3
Боец
Сообщений: 107
Статус: Offline
Код
forward AdminMessage(color,const string[],level);

и
Код
stock AdminMessage(color,const string[],level)  
{  
   for(new i = 0; i < MAX_PLAYERS; i++)  
   {  
    if(IsPlayerConnected(i))  
    {  
     if(Player[i][pAdmin] >= level)  
     {  
      SendClientMessage(i, color, string);  
     }  
    }  
   }  
   return true;  
}


К чему это все? Где объяснение? Ну вот:
Код
ABroadCast(0xA85400AA, string, 1);


Теперь дословно:
Вы вызываете функцию ABroadCast (RLS, как и SendAdminMessage), но дали исходный код от функции SendAdminMessage. Это сравнимо с тем, что я напишу целый античит в инклюде и дам вам другой инклюд, хотя заказн был античит =)


ушел, не вернусь <_<
roote Дата: Понедельник, 03.11.2014, 10:07 | Сообщение # 4
Боец
Сообщений: 207
Статус: Offline
Цитата Chester_Master ()
Навряд-ли кто то возьмет себе команду, без оптимизации.

Кому надо тот возьмет! И оптимизирует, не так ли?

Добавлено (03.11.2014, 10:07)
---------------------------------------------

Цитата Fake{yl] ()
Теперь дословно:
Вы вызываете функцию ABroadCast (RLS, как и SendAdminMessage), но дали исходный код от функции SendAdminMessage. Это сравнимо с тем, что я напишу целый античит в инклюде и дам вам другой инклюд, хотя заказн был античит =)

Цитата Fake{yl] ()
Теперь дословно:
Вы вызываете функцию ABroadCast (RLS, как и SendAdminMessage), но дали исходный код от функции SendAdminMessage. Это сравнимо с тем, что я напишу целый античит в инклюде и дам вам другой инклюд, хотя заказн был античит =)

Согласен это с RPS, по сколько большинство начинающих, знакомиться с RLS. На счет оптимизации со стоками я раньше не работал, а сейчас стал, так что тут моя ошибка, по оптимизации кода


--> Как заработать деньги на проекте Samp Rp | http://cheat-master.ru/forum/14-413833-1-17-1
--> 312 день на сайте | 26 марта (2015 год)
SopranoV Дата: Суббота, 08.11.2014, 09:18 | Сообщение # 5
Боец
Сообщений: 282
Статус: Offline
Не полностью вырезал команду когда вырезал biggrin

Изучаю AHK программирование
SeX-PrO-AdReNaLiN Дата: Суббота, 08.11.2014, 09:22 | Сообщение # 6
Авторитет
Сообщений: 1310
Статус: Offline
Fake{yl], согласен

user N over 99999
sabaky12 Дата: Воскресенье, 09.11.2014, 17:12 | Сообщение # 7
Боец
Сообщений: 148
Статус: Offline
пошёл rpg мод скачал и вырезал, а тут работы многовато

My Skype: sabaky12
iWesley Дата: Пятница, 21.11.2014, 15:14 | Сообщение # 8
Боец
Сообщений: 110
Статус: Offline
Вот DC_CMD + sscanf, и вот так лучше будет + оптимизация.
Код
ALT:report:rep; // Альтернативная команда.
CMD:report(playerid, params[]) // Команда
{
      if(sscanf(params,"s[72]", params[0])) return SCM(playerid, COLOR_WHITE, "Введите: (/rep)ort [text]"); // при вводе команды.
      new string[104]; // Переменая
      format(string, 104, "[A] Жалоба %s: %s", NamePlayer[playerid], params[0]); // NamePlayer - Функция проверки ника, params[0] - текст который пишется в репорт.
      ABroadCast(0xA85400AA, string,1); // Пишем в админ чат | string   
      return true;
}

Функция команды такая же только без диалога и пишет тоже в админ чат.


Сообщение отредактировал iWesley - Пятница, 21.11.2014, 15:20
samper1005 Дата: Среда, 15.07.2015, 17:58 | Сообщение # 9
Новичок
Сообщений: 7
Статус: Offline
roote, stock AdminMessage(color,const string[],level)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Player[i][pAdmin] >= level)
{
SendClientMessage(i, color, string);
}
}
}
return true;
}
куда это вставлять


javascript://
[CM]Kingster Дата: Среда, 15.07.2015, 18:21 | Сообщение # 10
Боец
Сообщений: 245
Статус: Offline
Цитата samper1005 ()
roote, stock AdminMessage(color,const string[],level)
{
for(new i = 0; i < MAX_PLAYERS; i++)
{
if(IsPlayerConnected(i))
{
if(Player[i][pAdmin] >= level)
{
SendClientMessage(i, color, string);
}
}
}
return true;
}
куда это вставлять

Найди в поиске "stock" (без кавычек) и вставь рядом с ними.


Пользователь Cheat - Master уже 400 дней.

Я в Контакте - vk.com/buddy_fly
  • Страница 1 из 1
  • 1
Поиск: