/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
|
Не полностью вырезал команду когда вырезал
Изучаю 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
|
|
|
|