Блокировка команд клиента
|
|
tavot | Дата: Пятница, 11.12.2009, 18:10:07 | Сообщение # 1 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| Вот код: Code public plugin_init(){ register_clcmd("say /start","desable") } public desable(id){ if(id==test[id]||id==test3[id]){ ColorChat(id,GREEN, "You are in a duel. Command disabled."); return PLUGIN_HANDLED } } Выдает ошибку: Warning: Function "desable" should return a value on line 349 Но с этой ошибкой все прекрасно работает, вот и хочу узнать - или как ее убрать - или забить на нее?
Сообщение отредактировал tavot - Пятница, 11.12.2009, 18:10:23 |
|
| |
DaTa | Дата: Пятница, 11.12.2009, 18:39:15 | Сообщение # 2 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Эта варнинг(предупреждение), а не ошибка Code public desable(id){ if(id==test[id]||id==test3[id]){ ColorChat(id,GREEN, "You are in a duel. Command disabled."); return PLUGIN_HANDLED } return PLUGIN_CONTINUE//или PLUGIN_HANDLED, если не хочешь что бы команда отображалась } Если ты в одном месте функции делаешь возврат значения, значит во всех точках возврата из функции должно возвращаться какое-то значение.
|
|
| |
tavot | Дата: Пятница, 11.12.2009, 18:51:47 | Сообщение # 3 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| DaTa, Спасибо, понял. Теперь все гуд) А есть ли еще какие то способы блокировать клиентские команды?
|
|
| |
DaTa | Дата: Пятница, 11.12.2009, 19:22:20 | Сообщение # 4 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Не очень понял суть вопроса, но блокировать можно еще в client_command() и в хуке fakemet'ы FM_ClientCommand. При обработке каких-то хуков плагины обрабатывают событие в порядке, установленном в plugins.ini . Если какой-то из плагинов заблокирует событие, то в следующих за ним хук не вызовется и само событие заблокируется. Для PLUGIN_HANDLED_MAIN заблокируется только само событие. Для некоторых функций из amxmodx и еще некоторых модулей(например, engine) нужно возвращать следующие значения: Code #define PLUGIN_CONTINUE 0 /* Продолжить обработку и вызвать функцию движка/мода */ #define PLUGIN_HANDLED 1 /* Остановить вызов остальных плагинов */ #define PLUGIN_HANDLED_MAIN 2 /* хоть в amxmodx.inc и написано что "для использования в client_command()" но не только для этого форварда; остальные плагины вызываются, но вызов функции движка/мода блокируется */ Само событие - это обычно вызов функции мода или вызов функции движка. Некоторые хуки не блокируются, например, client_disconnect()
|
|
| |
tavot | Дата: Пятница, 11.12.2009, 19:48:41 | Сообщение # 5 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| DaTa, я имел в виду джамп мод, там есть клиентские команды /start /reset /scout Вот их и другие мне надо блокировать при определенных событиях. Мой плагин взаимодействет с основным джамп плагином kz-arg при помощи native.
|
|
| |
PomanoB | Дата: Пятница, 11.12.2009, 20:49:42 | Сообщение # 6 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Ну ставь свой плагин выше в списке и return PLUGIN_HANDLED всё заблокирует
http://romanov4400.mybrute.com
|
|
| |
tavot | Дата: Пятница, 11.12.2009, 23:41:11 | Сообщение # 7 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| PomanoB, Забавно то, что плагин стоит ниже основного и тоже блокирует ( первый вариант) с исправленным предупреждением еще не проверял )
|
|
| |
PomanoB | Дата: Суббота, 12.12.2009, 09:18:11 | Сообщение # 8 |
 Генералиссимус
Группа: Cупер-модеры
Сообщений: 1313
Статус: Не в сети
| Плагин может блокировать сообщение в чат, но команда всё равно исполнится, то есть таймер пойдёт
http://romanov4400.mybrute.com
|
|
| |
tavot | Дата: Суббота, 12.12.2009, 10:58:49 | Сообщение # 9 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| PomanoB, В том то и дело - что не идет. Так как /scout - дает скаут в руги, а его не дается, а пишется мое предупреждение. Но тема интересная, надо по экспериментировать. Добавлено (12.12.2009, 10:58:49) --------------------------------------------- Нет вру. Если по самому первому варианту - то после плагина - работает все как надо. Если исправить предупреждение - то после плагина не работает. Если поставить перед плагином - то всегда блокирует.
|
|
| |
DaTa | Дата: Суббота, 12.12.2009, 16:24:23 | Сообщение # 10 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Можешь детально описать, что у тебя есть и чего тебе надо добиться?
|
|
| |
tavot | Дата: Суббота, 12.12.2009, 23:51:01 | Сообщение # 11 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| DaTa, Есть плагин А - в нем команда 555 Есть плагни Б - в котормо при определенно событии команда 555 должна блокироваться Плагины А и Б взаимодействую при помощи native т.е. плагин Б передает плагину А - инфу о том то игрок стартует В этом промежутке должны блокироваться команды. плагин А передает плагину Б - инфу что игрок финиширует Основной плагин А - kz-arg - дажмап мод Вторйо плагин Б - мой плагин дуели для этого мода.
|
|
| |
DaTa | Дата: Воскресенье, 13.12.2009, 13:21:35 | Сообщение # 12 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| пропиши в plugins.ini в таком порядке: Code ;... B.amxx A.amxx ;... В плагине B при "определенном событии" возвращай PLUGIN_HANDLED(заблокирует); при отсутствии оного - PLUGIN_CONTINUE(отправит дальше по списку плагинов).
|
|
| |
tavot | Дата: Воскресенье, 13.12.2009, 17:29:44 | Сообщение # 13 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| DaTa, Спасибо буду пробовать ) А можно прсото оставить как в первом варианте? Ну предупреждение там - зато все работает Илил есть какой то подводный камень?
|
|
| |
DaTa | Дата: Воскресенье, 13.12.2009, 17:47:38 | Сообщение # 14 |
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| В первом варианте может вернуться мусор - не понятно, заблокирует или нет.
|
|
| |
tavot | Дата: Воскресенье, 13.12.2009, 19:58:22 | Сообщение # 15 |
Генерал-майор
Группа: Пользователи
Сообщений: 256
Статус: Не в сети
| DaTa, Но работает в этом и вопрос ) в общем пока что потестю все варианты. )
|
|
| |