Правила форума Гаранты форума
Размещение рекламы AMX-X компилятор

Здравствуйте, гость Вход | Регистрация

Наши новости:

14-дек
24-апр
10-апр
11-апр

2 страниц V   1 2

slowhack cl_filterstuffcmd

, Знаю, что это не хорошо, но очень надо! [РЕШЕНО]
Статус пользователя IAMHARD
сообщение 21.12.2015, 20:25
Сообщение #1
Стаж: 11 лет

Сообщений: 194
Благодарностей: 57
Полезность: 234

Здравствуйте!
Хочу чтоб при выборе пункта в меню клиент писал команду "say /hot"
Но cl_filterstuffcmd 1 блокирует say
К сожалению у меня нет исходника этого плагина, поэтому только через "say /hot"

Сделать к примеру при:
client_connect -> cl_filterstuffcmd 0
client_disconnect -> cl_filterstuffcmd 1 (чтоб ни кого не обидеть)

PS ничего вредоносного пихать в конфиги не собираюсь, на мониторингах не состою.
PPS я порядочный человек, правда очень нужно ^_^
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Safety1st
сообщение 21.12.2015, 20:26
Сообщение #2
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Можно обойтись без слоухакинга.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя IAMHARD
сообщение 21.12.2015, 20:34
Сообщение #3
Стаж: 11 лет

Сообщений: 194
Благодарностей: 57
Полезность: 234

Цитата(Safety1st @ 21.12.2015, 21:21) *
Можно обойтись без слоухакинга.

Это хорошо!

Тогда:
Менюха
Код:
public pmenu(id, menu, item) { 
if( item == MENU_EXIT )
return PLUGIN_HANDLED;

new playername[32]
get_user_name(id, playername, 31)

switch(item) {
case 0: cmds(id)
case 1: {
if (g_IsStarted || g_bIsReady[id]) {
client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "OPTION_NOT_AVAILABLE")
player(id)
return PLUGIN_HANDLED
}

else {
Prepare(id)
return PLUGIN_HANDLED
}

}

case 2: {
if (g_bIsReady[id])
{
if (g_IsStarted)
{
client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "OPTION_NOT_AVAILABLE")
player(id)
return PLUGIN_HANDLED
}

unPrepare(id)
return PLUGIN_HANDLED
}

client_print(id, print_chat, "%s %L", PREFIX, LANG_PLAYER, "OPTION_NOT_AVAILABLE")
player(id)
return PLUGIN_HANDLED
}

case 3: {
display_mutemenu(id, g_menuposition[id] = 0)
return PLUGIN_HANDLED
}

case 4:
{
console_cmd(id, "say /hot")
return PLUGIN_HANDLED
}

case 5:
{
client_cmd(id, "amx_langmenu")
return PLUGIN_HANDLED
}
case 6: credits(id)
}

player(id)
return PLUGIN_HANDLED
}


Поможете?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 20:43
Сообщение #4
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Большей частью тут надо плагин, реагирующий на /hot, править.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 21.12.2015, 20:46
Сообщение #5
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

создай команду без использования чата и повесь функцию на неё
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя IAMHARD
сообщение 21.12.2015, 20:46
Сообщение #6
Стаж: 11 лет

Сообщений: 194
Благодарностей: 57
Полезность: 234

Цитата(Safety1st @ 21.12.2015, 21:39) *
Большей частью тут надо плагин, реагирующий на /hot, править.

В том то и дело, что у меня нет исходников. Статистика скальпеля. В ней команда /hot отвечает за топ онлайн игроков. Вот мне и надо, чтоб при выборе в меню игроку вылезал этот топ, ну и в планах перед окончанием карты чтоб /statsme - статистика за карту. Но это я уже сам, с первым бы разобраться.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 21:13
Сообщение #7
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

IAMHARD, пришли в ЛС ссылку на сам плагин в магазине и amxx-файл, постараюсь разобраться.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 21.12.2015, 21:20
Сообщение #8


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

Если код закрыт то автор плагина (при здравом уме) должен запилить еще консольную команду для игроков.
Попробуй пробей все квары плагина ( amxx cvars название_плагина )

И чего отсылка через console_cmd(id, "say /hot") , чем оно лучше чем client_cmd(id, "say /hot") ? - в гугле не нашел норм объяснения разницы.
Хотя эт не важно ибо что так что так протекторы должны блокировать.
Вроде как через engclient_cmd(id, "консольная_команда") должно работать.

Цитата
client_disconnect -> cl_filterstuffcmd 1 (чтоб ни кого не обидеть)


Не прокатит , ведь после того как игрок отключился ты ему ничего не можешь послать.



[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя skitls187
сообщение 21.12.2015, 21:23
Сообщение #9


Стаж: 13 лет
Город: Москва

Сообщений: 390
Благодарностей: 100
Полезность: 139

Cкрытый текст
Вроде как через engclient_cmd(id, "консольная_команда") должно работать.

аут
Cкрытый текст
Не прокатит , ведь после того как игрок отключился ты ему ничего не можешь послать.

Если ты досихпор пишешь на 181 182 то это твои проблемы.(хотя на них тоже можно послать, так что аут#2).


Я русский и мне за нас стыдно!!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 21:34
Сообщение #10
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(ssx @ 21.12.2015, 22:15) *
И чего отсылка через console_cmd(id, "say /hot") , чем оно лучше чем client_cmd(id, "say /hot") ? - в гугле не нашел норм объяснения разницы.

А разницы и нет smile.gif

Цитата(ssx @ 21.12.2015, 22:15) *
Вроде как через engclient_cmd(id, "консольная_команда") должно работать.

Не, плагины на такую команду не среагируют. В AMXX 1.8.3 для этих целей есть натива amxclient_cmd.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 22:15
Сообщение #11
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Вот как-то так smile.gif

Код:
// ...

case 4:
{
CallHotCmd(id)
return PLUGIN_HANDLED
}

// ...

CallHotCmd(id) {
static szTargetPlugin[] = "statsx_rbs.amxx"
static szTargetFunction[] = "cmdHot"
const CALLFUNC_SUCCESS = 1

if( callfunc_begin( szTargetFunction, szTargetPlugin ) == CALLFUNC_SUCCESS ) {
callfunc_push_int(id)
callfunc_end()
}
}


Для вызова /statsme принцип тот же, только во время INTERMISSION нужно будет сделать loop по всем игрокам, а szTargetFunction[] = "cmdStatsMe".
--

Такое 'работает' только с public-функциями. Надо знать название файла плагина, функции и набор требуемых ей параметров.
Все необходимые callfunc-нативы перечислены в amxmodx.inc. Больше инфы тут.

Отредактировал: Safety1st, - 22.12.2015, 10:12
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 4 раз
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 22:24
Сообщение #12
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

В коде выше поправил строчку 12.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя IAMHARD
сообщение 21.12.2015, 22:28
Сообщение #13
Стаж: 11 лет

Сообщений: 194
Благодарностей: 57
Полезность: 234

Цитата(Safety1st @ 21.12.2015, 23:10) *
Вот как-то так smile.gif

Код:
// ...

case 4:
{
CallHotCmd(id)
return PLUGIN_HANDLED
}

// ...

CallHotCmd(id) {
static szTargetPlugin[] = "statsx_rbs.amxx"
static szTargetFunction[] = "cmdHot"

if( callfunc_begin( szTargetFunction, szTargetPlugin ) ) {
callfunc_push_int(id)
callfunc_end()
}
}


Для вызова /statsme принцип тот же, только во время INTERMISSION нужно будет сделать loop по всем игрокам, а szTargetFunction[] = "cmdStatsMe".

Не работает, и в консоль ни чего не выводит (((
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 21.12.2015, 22:28
Сообщение #14


Стаж: 12 лет

Сообщений: 2237
Благодарностей: 1343
Полезность: 836

//del

Сорри, Сафа обновил сообщение .. переделал и все стало работать!



Отредактировал: ssx, - 21.12.2015, 22:30


[Half-Life DM FFA] 78.152.169.100:27016
[CS 1.6 GunGame] 78.152.169.100:27018
[CS 1.6 DM AIM] 78.152.169.100:27017
[CS 1.6 DM FFA] 78.152.169.100:27015
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя IAMHARD
сообщение 21.12.2015, 22:31
Сообщение #15
Стаж: 11 лет

Сообщений: 194
Благодарностей: 57
Полезность: 234

Цитата(Safety1st @ 21.12.2015, 23:19) *
В коде выше поправил строчку 12.

Все работает!!! Спасибо, ты гений!!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя user.gameover.user
сообщение 21.12.2015, 22:31
Сообщение #16
Стаж: 15 лет

Сообщений: 1470
Благодарностей: 426
Полезность: 700

Код:
static szTargetPlugin[] = "statsx_rbs.amxx"

.amxx же
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя IAMHARD
сообщение 21.12.2015, 22:36
Сообщение #17
Стаж: 11 лет

Сообщений: 194
Благодарностей: 57
Полезность: 234

Я как понимаю, ты декомпелировал плагин, нашел cmdHot и привязал. (я совсем зеленый еще в скриптинге, изъясняюсь как умею) =)))
Но вот в инете инфы про

Код:
static szTargetPlugin[] = ""
static szTargetFunction[] = ""

if( callfunc_begin( szTargetFunction, szTargetPlugin ) ) {
callfunc_push_int(id)
callfunc_end()


я вообще ни какой не нашел, можно ли где то почитать, для общего развития, так сказать?

Отредактировал: IAMHARD, - 21.12.2015, 22:36
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 22:36
Сообщение #18
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Строчку 15 ещё поменяйте, как у меня.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя IAMHARD
сообщение 21.12.2015, 22:37
Сообщение #19
Стаж: 11 лет

Сообщений: 194
Благодарностей: 57
Полезность: 234

А, все нашел, не то искал просто)))
ВОТ
http://amxxmodx.ru/core/amxmodxinc/300-callfunc_begin-funkciya-vyzyvaet-druguyu-funkciyu-po-ee-imeni-v-etom-ili-drugom-plagine.html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Safety1st
сообщение 21.12.2015, 22:37
Сообщение #20
Стаж: 14 лет
Город: Moscow

Сообщений: 7228
Благодарностей: 8071
Полезность: 196

Цитата(IAMHARD @ 21.12.2015, 23:31) *
Но вот в инете инфы про

я вообще ни какой не нашел, можно ли где то почитать, для общего развития, так сказать?

Такое 'работает' только с public-функциями. Надо знать название файла плагина, функции и набор требуемых ей параметров.
Все необходимые callfunc-нативы перечислены в amxmodx.inc.
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: