|
Вниманию участников! Данный форум теперь является архивом и вскором времени здесь нельзя будет создавать новых тем! Просьба всем для общения и создания новых тем перейти на наш новый форум: http://amxmodx.su/
|
Отлавливание звуковых MSG и применение к ним своих настроек
|
|
| Brute | Дата: Суббота, 09.08.2008, 04:01:44 | Сообщение # 1 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Собственно рассмотрим плагин VEN'a: "Fun Radio" Code #include <amxmodx> #include <engine>
public plugin_init() { register_plugin("Fun Radio", "0.1", "VEN") register_message(get_user_msgid("SendAudio"), "msg_send_audio") register_cvar("amx_funradio_playspeed", "130") }
public msg_send_audio() { if (get_msg_arg_int(3) == 100) set_msg_arg_int(3, ARG_SHORT, get_cvar_num("amx_funradio_playspeed")) } Сначало он регистрирует месагу, тем самым получает возможность её отловить. А потом применяет к ней свои настройки. Так вот мне нужно что-то аналогичное, чтобы отловить радио-месаги "Контры вин" и "Теры вин", и оглушить их нафиг, чтобы не кто их не услышал. Также нужно поймать аудио-месаги, которые будут вытекать через команду spk и приминить к ним спид, как в плагине VEN'a Добавлено (2008-08-09, 4:01 Am) ---------------------------------------------
Quote (Brute) Так вот мне нужно что-то аналогичное, чтобы отловить радио-месаги "Контры вин" и "Теры вин", и оглушить их нафиг, чтобы не кто их не услышал. А можно их вообще заблокировать!?
|
| |
|
|
| VEN | Дата: Суббота, 09.08.2008, 13:22:02 | Сообщение # 2 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| То же самое, только проверяешь второй аргумент сообщения: если он равен "%!MRAD_terwin" или "%!MRAD_ctwin", то возвращаешь PLUGIN_HANDLED. Примечание: "%!MRAD_rounddraw" - для варианта "ничья". Quote Также нужно поймать аудио-месаги, которые будут вытекать через команду spk и приминить к ним спид Насколько я знаю, это невозможно.
|
| |
|
|
| Brute | Дата: Суббота, 09.08.2008, 14:04:24 | Сообщение # 3 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Code #include <amxmodx> #include <engine>
public plugin_init() { register_plugin("Burda", "0.1", "X3") register_message(get_user_msgid("SendAudio"), "msg_send_audio") }
public msg_send_audio() { if (get_msg_arg_string(2) == "%!MRAD_terwin" || "%!MRAD_ctwin") PLUGIN_HANDLED } Что-то очень просто, буду пробывать, спасибо за ответ Quote (VEN) Насколько я знаю, это невозможно. Ну тебе можно верить наслово!
|
| |
|
|
| VEN | Дата: Воскресенье, 10.08.2008, 10:38:28 | Сообщение # 4 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Quote if (get_msg_arg_string(2) == "%!MRAD_terwin" || "%!MRAD_ctwin") Это не верно, т.к. ты оперируешь со строками. Подсказки ниже. Quote (messages.inc) /* Gets the value of argn. */ native get_msg_arg_int(argn); native Float:get_msg_arg_float(argn); native get_msg_arg_string(argn, szReturn[], iLength); Quote (string.inc) /* Checks if two strings equal. If len var is set * then there are only c chars comapred. */ native equal(const a[],const b[],c=0); /* Compares two strings with the C function strcmp(). Returns 0 on equal. */ native strcmp(const string1[], const string2[], ignorecase=0); Кстати, #include <engine> уже не требуется, т.к. *msg* функции были в свое время перемещены в AMX Mod X core.
|
| |
|
|
| Brute | Дата: Воскресенье, 10.08.2008, 13:05:22 | Сообщение # 5 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| вот на писал плагин Code #include <amxmodx>
public plugin_init() { register_plugin("msg_blocker", "1.0.0.0", "Brute") register_message(get_user_msgid("SendAudio"), "msg_send_audio") register_cvar("amx_msg_block", "1") }
public msg_send_audio() { if(get_cvar_num("amx_msg_block") == 1) { client_print(0, print_console, "Message In") new arg[15] get_msg_arg_string(2, arg, 14) client_print(0, print_console, "Message arg is: %s", arg) if(equal(arg, "%!MRAD_terwin") || equal(arg, "%!MRAD_ctwin")) { client_print(0, print_console, "Message Blocked suc.") set_msg_block(get_user_msgid("SendAudio"), BLOCK_ONCE) } } } Quote ( Вырезка из консоли) Message In Message arg is: !MRAD_LETSGO Message In Message arg is: !MRAD_LETSGO ] kill Message In Message arg is: !MRAD_ctwin Message Blocked suc. Brute died Всё работает, кроме блокировки, звук всё равно произносится:]Добавлено (2008-08-10, 1:05 Pm) ---------------------------------------------
Code #include <amxmodx>
public plugin_init() { register_plugin("msg_blocker", "1.0.0.0", "Brute") register_message(get_user_msgid("SendAudio"), "msg_send_audio") register_cvar("amx_msg_block", "1") }
public msg_send_audio() { if(get_cvar_num("amx_msg_block") == 1) { new arg[15] get_msg_arg_string(2, arg, 14) if(equal(arg, "%!MRAD_terwin") || equal(arg, "%!MRAD_ctwin")) { client_print(0, print_console, "Message Blocked suc.") set_msg_arg_int(3, ARG_SHORT, 0) } } } Не получилось блокировать, зато получилось остановить! ^^
|
| |
|
|
| DaTa | Дата: Воскресенье, 10.08.2008, 15:25:58 | Сообщение # 6 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (Brute) Не получилось блокировать нужно вернуть PLUGIN_HANDLED, что-бы заблокировать Code if(equal(arg, "%!MRAD_terwin") || equal(arg, "%!MRAD_ctwin")) return PLUGIN_HANDLED
|
| |
|
|
| Brute | Дата: Воскресенье, 10.08.2008, 15:53:01 | Сообщение # 7 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| DaTa, да что ты говоришь, сначало попробуй откомпилировать
|
| |
|
|
| DaTa | Дата: Воскресенье, 10.08.2008, 17:16:04 | Сообщение # 8 |
|
Генерал-полковник
Группа: Cупер-модеры
Сообщений: 1025
Статус: Не в сети
| Quote (Brute) DaTa, да что ты говоришь, сначало попробуй откомпилировать ну если ты не догадался, компилятор видит, что функция возвращает значение и он полагает, что функция должна вернуть значение в любом случае(т.к. явной спецификации возврата (например void из С) в pawn нету, и не указана cell/int спецификация) Code #include <amxmodx>
public plugin_init() { register_plugin("msg_blocker", "1.0.0.0", "Brute") register_message(get_user_msgid("SendAudio"), "msg_send_audio") register_cvar("amx_msg_block", "1") }
public msg_send_audio() { if(get_cvar_num("amx_msg_block") == 1) { new arg[15] get_msg_arg_string(2, arg, 14) if(equal(arg, "%!MRAD_terwin") || equal(arg, "%!MRAD_ctwin")) return PLUGIN_HANDLED//блокируем поступление сообщения к следующим плагинам и вызов функций движка } return PLUGIN_CONTINUE//"отпускаем" сообщение дальше }
|
| |
|
|
| Brute | Дата: Воскресенье, 10.08.2008, 21:53:40 | Сообщение # 9 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| ММ спасибо! Добавлено (2008-08-10, 9:53 Pm) ---------------------------------------------
Quote (DaTa) #include <amxmodx> public plugin_init() { register_plugin("msg_blocker", "1.0.0.0", "Brute") register_message(get_user_msgid("SendAudio"), "msg_send_audio") register_cvar("amx_msg_block", "1") } public msg_send_audio() { if(get_cvar_num("amx_msg_block") == 1) { new arg[15] get_msg_arg_string(2, arg, 14) if(equal(arg, "%!MRAD_terwin") || equal(arg, "%!MRAD_ctwin")) return PLUGIN_HANDLED//блокируем поступление сообщения к следующим плагинам и вызов функций движка } return PLUGIN_CONTINUE//"отпускаем" сообщение дальше } Не хрена не пашет!!! В топку его!!!
|
| |
|
|
| VEN | Дата: Вторник, 19.08.2008, 19:05:05 | Сообщение # 10 |
|
AMXX-Скриптинг-Эксперт
Группа: Админы
Сообщений: 1892
Статус: Не в сети
| Попробуй Code if(equal(arg[1], "!MRAD_terwin") || equal(arg[1], "!MRAD_ctwin"))
|
| |
|
|
| Brute | Дата: Вторник, 19.08.2008, 19:34:33 | Сообщение # 11 |
 Генерал-полковник
Группа: Скриптеры
Сообщений: 1123
Статус: Не в сети
| Quote (VEN) Попробуй Code if(equal(arg[1], "!MRAD_terwin") || equal(arg[1], "!MRAD_ctwin")) Уже реализовано в плагине cs: postal2 fun-stats T 1.1, спасибо. Не забыл и черкнул в кредитах.
|
| |
|
|
 | AMX Mod X Russian Community © 2006-2026  |  |
|
| |