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

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

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

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

Перехват сообщений Say

, и их модернизирование так сказать :)
Статус пользователя GODZILLA
сообщение 23.4.2010, 23:14
Сообщение #1


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

Как перехватить сообщение игрока это понятно
Код
register_clcmd("say","handle_say")
register_clcmd("say_team","handle_teamsay")


Но вот как их модернизировать... чтоб допустим в сообщении к нику прбавлялся тэг - ADMIN или страна [RU] , вобщем идейки разные есть.

Нашел плагин Amx Lang Chat. там сделано всё простенько

Код
            new said[2]
            read_argv(1, said, 1)
            
            if(equal(said, "@") || equal(said, "") || equali(said, "/"))
            return PLUGIN_CONTINUE
            
            new szBufferLang[3], pLang[3]
            
            new szArgs[106], szBuffer[106], name[32]
            get_user_name(id, name, 31)
            read_args(szArgs, charsmax(szArgs))
            remove_quotes(szArgs)
            
            get_user_info(id, "lang", szBufferLang, 2)
            get_lang(g_Lang[id][0], pLang)
            
            g_Lang[id][0] = get_lang_id(szBufferLang)
            
            (is_user_alive(id) ? formatex(szBuffer, charsmax(szBuffer), "^x04[ML: %s]^x03 %s^x01: %s", pLang, name, szArgs) : formatex(szBuffer, charsmax(szBuffer), "^x01%L^x04 [ML: %s]^x03 %s^x01: %s", LANG_PLAYER, "DEAD_PLAYER", pLang, name, szArgs))
            
            console_print(id, szBuffer)
            
            ColorChat(0, szBuffer)


Приспособил этот кусочек для своего плагина: поставил доступ в самое начало,убрал лишнее + небольшая косметичаская работка, но вот незадача - теперь я не могу пользоваться чат-командами на халявные пушки...
можно конечно использывать что-то типа
Код
if(contain(said, "/dgl") != -1)
givedgl(id)

но тогда игроки, которые будут писать /dgl в чат ничего не увидят, а должны по моей задумке увидеть - "Команда только для администратора"

Вот такой вот код примерно получился.
Код
if(get_user_flags(id) & ADMIN_LEVEL_H )
{
            new said[2]
            read_argv(1, said, 1)
            
            if(equal(said, "@") || equal(said, "") || equali(said, "/"))
            return PLUGIN_CONTINUE
                        
            new szArgs[106], szBuffer[106], name[32]
            get_user_name(id, name, 31)
            read_args(szArgs, charsmax(szArgs))
            remove_quotes(szArgs)

            
            (is_user_alive(id) ? formatex(szBuffer, charsmax(szBuffer), "^x04[ADMIN]^x03 %s^x01: %s", name, szArgs) : formatex(szBuffer, charsmax(szBuffer), "^x01*DEAD*^x04 [ADMIN]^x03 %s^x01: %s", name, szArgs))
            
            console_print(id, szBuffer)
            
            ColorChat(0, szBuffer)
}


Надеюсь вы меня поняли :) щас пойду спать - устал, мб завтра на свежую голову что нить придумаю..
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   Цитировать сообщение
Статус пользователя Racoon
сообщение 24.4.2010, 0:00
Сообщение #2


Стаж: 18 лет

Сообщений: 1757
Благодарностей: 1523
Полезность: 1116

Может тебе поможет исходник из этой темы https://c-s.net.ua/forum/topic23449.html
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя Makzz
сообщение 24.4.2010, 6:58
Сообщение #3


Стаж: 18 лет

Сообщений: 2198
Благодарностей: 1365
Полезность: 1080

После ColorChat(0, szBuffer) напиши return PLUGIN_HANDLED это скроет оригинальные сообщения игрока.
Если не получится - напиши весь код плагина.

ps.gif console_print(id, szBuffer) зачем?
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 1 раз
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 24.4.2010, 11:41
Сообщение #4


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

я просто скопировал код этого плагина и тут уже (на форуме, когда открывал тему) его подредактировал быстренько
Racoon, спасибо, посмотрю
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 4.5.2010, 17:19
Сообщение #5


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

забил на эту затею :)
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
Статус пользователя Sh00ter
сообщение 4.5.2010, 19:13
Сообщение #6


Стаж: 16 лет

Сообщений: 166
Благодарностей: 270
Полезность: 1519

Цитата(GODZILLA @ 4.5.2010, 18:19) *
забил на эту затею :)

насчет модификации смотри тут https://c-s.net.ua/forum/topic23595.html
вроде там все доходчиво)
а насчет
Цитата
но тогда игроки, которые будут писать /dgl в чат ничего не увидят, а должны по моей задумке увидеть - "Команда только для администратора"

Код
else
{
         client_print(id, print_chat, "Команда только для администратора")
}


Или я тебя не правильно понял?


!
Аккаунт пользователя заблокирован до: 2.4.4748, 16:35
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
Поблагодарили 2 раз
   + Цитировать сообщение
Статус пользователя GODZILLA
сообщение 4.5.2010, 20:32
Сообщение #7


Стаж: 18 лет

Сообщений: 1471
Благодарностей: 440
Полезность: 716

если опять понадобится надобость, то обязательно посмотрю твой код!
Перейти в начало страницы         Просмотр профиля    Отправить личное сообщение
   + Цитировать сообщение
  Тема закрытаНачать новую тему
 
0 пользователей и 1 гостей читают эту тему: