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

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

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

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

2 страниц V   1 2

Блокировка disconnect сообщений в чате

, [HALF-LIFE]
Статус пользователя ssx
сообщение 3.5.2015, 17:52
Сообщение #21


Стаж: 12 лет

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

Вот такой вот лог файл
Прикрепленные файлы:
Прикрепленный файл  voed.txt ( 26,83 килобайт ) Кол-во скачиваний: 9


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 3.5.2015, 17:58
Сообщение #22
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

Хм, все верно, сообщение хукается
Попробуй так
Код:
#include <amxmodx>

new msgid

public plugin_init()
{
msgid = get_user_msgid("SayText")
register_plugin( "Disconnect MSG Block" , "0.1" , "thx Voed" )
register_message( msgid , "fw_MsgTextMsg" )
}

public fw_MsgTextMsg(msgId, msgDest, receiver)
{
new text[190]
get_msg_arg_string(2, text, charsmax(text))
//log_to_file("addons/amxmodx/logs/voed.txt", text)
if(containi(text, "has left the game"))
return PLUGIN_HANDLED

return PLUGIN_CONTINUE
}
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.5.2015, 18:15
Сообщение #23


Стаж: 12 лет

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

Сообщений о дисконнекте нету но и чат не работает (писать нельзя, амхх сообщения есть)

Отредактировал: ssx, - 3.5.2015, 18:20


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 3.5.2015, 18:31
Сообщение #24
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

contain выделывается почему-то
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 3.5.2015, 18:52
Сообщение #25
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

containi() != -1
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.5.2015, 19:02
Сообщение #26


Стаж: 12 лет

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

Цитата(Radius @ 3.5.2015, 19:52) *
containi() != -1

объясни как это заюзать.

Отредактировал: ssx, - 3.5.2015, 19:03


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 3.5.2015, 19:10
Сообщение #27
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

Код:
#include <amxmodx>

new const DISCONNECT_CHAT_MSG[] = "has left the game";

public plugin_init()
{
register_plugin ("Block Disconnect Chat Message" , "1.0" , "Free");
register_message(get_user_msgid("SayText") , "msg_SayText");
}

public msg_SayText()
{
static arg_string[191];
get_msg_arg_string(2, arg_string, charsmax(arg_string))

return (contain(arg_string, DISCONNECT_CHAT_MSG) != -1) ? PLUGIN_HANDLED : PLUGIN_CONTINUE;
}


Отредактировал: Radius, - 3.5.2015, 19:11
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 3.5.2015, 19:18
Сообщение #28


Стаж: 12 лет

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

УРАААА!!!! Вариант от Radius блочит сообщения о дисконнекте в чате и при этом чат нормально работает!

Спасибо Voed & Radius за помощь.

Отредактировал: ssx, - 3.5.2015, 19:19


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя bapstop
сообщение 3.5.2015, 19:41
Сообщение #29


Стаж: 12 лет

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

Помогло
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 3.5.2015, 19:57
Сообщение #30
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

Возможно кому-то понадобится изменить это сообщение, поэтому чтобы не создавали отдельную тему пускай будет тут еще эта версия.

Код:
#include <amxmodx>

const MSG_LEN = 191;
const NAME_LEN = 32;

new const DISCONNECT_CHAT_MSG[] = "has left the game";
new need_change_msg, pcv_change_msg, pcv_disconnect_msg, new_disconnect_msg[MSG_LEN];

public plugin_init()
{
register_plugin ("Edit Disconnect Chat Message" , "1.0" , "Free");
register_message(get_user_msgid("SayText") , "msg_SayText");
pcv_change_msg = register_cvar ("edcm_change_msg", "0");
pcv_disconnect_msg = register_cvar ("edcm_disconnect_msg", "- %s покинул игру"); //%s убирать нельзя, будет подставлено имя игрока
}

public plugin_cfg()
{
server_exec();
need_change_msg = get_pcvar_num(pcv_change_msg);

if (need_change_msg) {
get_pcvar_string (pcv_disconnect_msg, new_disconnect_msg, charsmax(new_disconnect_msg));
}
}

public msg_SayText(msg_id, msg_dest, id)
{
static arg_string[MSG_LEN], user_name[NAME_LEN];
get_msg_arg_string(2, arg_string, charsmax(arg_string));

if (contain(arg_string, DISCONNECT_CHAT_MSG) != -1) {
if (need_change_msg && new_disconnect_msg[0]) {
get_user_name(id, user_name, charsmax(user_name));
formatex(arg_string, charsmax(arg_string), new_disconnect_msg, user_name);
set_msg_arg_string(2, arg_string);
}
else {
return PLUGIN_HANDLED;
}
}

return PLUGIN_CONTINUE;
}


Отредактировал: Radius, - 3.5.2015, 20:48
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 3 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 4.5.2015, 23:43
Сообщение #31


Стаж: 12 лет

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

Что бы не создавать отдельную тему, прошу помочь сделать что бы блочило сообщения если слеш в начале .
На данный момент блокирует слеш если в любом месте.
Прикрепленные файлы:
Прикрепленный файл  disconnect_msg_block.sma ( 532 байт ) Кол-во скачиваний: 5


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
voed
сообщение 4.5.2015, 23:53
Сообщение #32
Стаж: 11 лет

Сообщений: 2593
Благодарностей: 1760
Полезность: 405

ssx, лучше сделать отдельным плагином т.к. перед слэшем идет еще ник игрока. Обычный хайд слэш каэсовский должен подойти
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя ssx
сообщение 5.5.2015, 0:06
Сообщение #33


Стаж: 12 лет

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

Цитата(voed @ 5.5.2015, 0:53) *
ssx, лучше сделать отдельным плагином т.к. перед слэшем идет еще ник игрока. Обычный хайд слэш каэсовский должен подойти

Та вот такой пробовал
Скрытый текст
Код
#include <amxmodx>

public plugin_init()
{
        register_plugin("Block Slash", "1.0", "OOO")
    register_clcmd ( "say", "swearcheck" )
}

public swearcheck(id)
{
    new said[192]
    read_args ( said, 191 )
    if (equal(said[0],"/"))
        return PLUGIN_HANDLED

    return PLUGIN_CONTINUE
}

Не скрывает ничего.

П.С. Подкинули вот такой плагин
Код
#include <    amxmodx    >

new const P[]    =    "[PUB] Hide Slash"
new const V[]    =    "1.0"
new const A[]    =    "Bonaqua"

new g_Msg[64];

public plugin_init()
{
    register_plugin( P, V, A )
    
    register_clcmd( "say", "Cmd_Hook_Say" )
    register_clcmd( "say_team", "Cmd_Hook_Say" )
}

public Cmd_Hook_Say()
{
    read_args(g_Msg,63);
    remove_quotes(g_Msg);

    if(g_Msg[0] == '/')
    {
        return PLUGIN_HANDLED
    }
    return PLUGIN_CONTINUE
}


Работает в ХЛ.

Отредактировал: ssx, - 5.5.2015, 0:06


[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
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Radius
сообщение 5.5.2015, 1:42
Сообщение #34
Стаж: 12 лет

Сообщений: 454
Благодарностей: 418
Полезность: 330

Цитата
Код:
if (equal(said[0],"/"))

Такое и не должно работать, нужно еще указать кол-во проверяемых символов. А вообще быстрее будет:

Код:
if (said[0] == '/')
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя [WPMG]PRoSToTeM@
сообщение 5.5.2015, 3:15
Сообщение #35
Стаж: 13 лет

Сообщений: 1514
Благодарностей: 1025
Полезность: 725

ssx, Скрывание текста после ''/'' (Пост #696408) psych.gif
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
2 страниц V   1 2
 
Ответить в данную темуНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: