Русское сообщество по скриптингу

Перехват чат-команд

Все вопросы по скриптингу для SourceMod, помощь в редактировании плагинов.
Правила форума
1. Запрещено материться и оскорблять других участников форума.
2. Запрещен флуд, оффтоп, дабл постинг во всех разделах форума, кроме раздела "Болтовня".
3. Запрещено взламывать сайт/форум или наносить любой вред проекту.
4. Запрещено рекламировать другие ресурсы.
5. Запрещено создавать темы без информативного названия. Название темы должно отображать ее смысл.

В данном разделе форума разрешено создавать темы, касающие только скриптингу для SourceMod.

Правила при создании новой темы:
1. При вставке кода плагина необходимо использовать тег [pawn], в противном случае, если тег [pawn] не отображает ваш код, можно использовать тег [code].
2. Любые изображения должны быть загружены, как вложения к вашему сообщению.
3. При описании проблемы или запросе на помощь в редактировании плагина обязательно выкладывайте исходник sp плагина.

Перехват чат-команд

Сообщение burnx » 11 авг 2012, 18:16

Как грамотно сделать перехват чат команд?
Аватара пользователя
burnx
 
Сообщения: 81
Зарегистрирован: 28 окт 2011, 21:40
Благодарил (а): 19 раз.
Поблагодарили: 9 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Перехват чат-команд

Сообщение burnx » 16 авг 2012, 17:31

а в чем тогда разница AddCommandListener и RegConsoleCmd
Аватара пользователя
burnx
 
Сообщения: 81
Зарегистрирован: 28 окт 2011, 21:40
Благодарил (а): 19 раз.
Поблагодарили: 9 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Перехват чат-команд

Сообщение burnx » 17 авг 2012, 17:44

Вообщем проблема так и осталась, но нашел причину: когда игроки биндят команду, аргументы возвращаются без кавычек.
Аватара пользователя
burnx
 
Сообщения: 81
Зарегистрирован: 28 окт 2011, 21:40
Благодарил (а): 19 раз.
Поблагодарили: 9 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Re: Перехват чат-команд

Сообщение burnx » 17 авг 2012, 18:20

Если кому будет интересно, то решил так: [pawn]
  1. public OnPluginStart()

  2. {

  3.         AddCommandListener(OnClientMessage, "say");

  4.         AddCommandListener(OnClientMessage, "say_team");

  5. }

  6.  

  7. public Action:OnClientMessage(client, const String:msg[], args)

  8. {

  9.         if (client && IsClientInGame(client))

  10.         {

  11.                 new String:text[192];

  12.                

  13.                 GetCmdArgString(text, sizeof(text));

  14.                

  15.                 new len = strlen(text);

  16.                

  17.                 if (text[0] == '"' && text[len-1] == '"')

  18.                 {

  19.                         for(new i; i < len;)

  20.                         {

  21.                                 text[i] = text[++i];

  22.                         }

  23.                        

  24.                         text[len-2] = '\0';

  25.                 }

  26.                 //code

  27.         }

  28.  

  29. }
[/pawn]
Аватара пользователя
burnx
 
Сообщения: 81
Зарегистрирован: 28 окт 2011, 21:40
Благодарил (а): 19 раз.
Поблагодарили: 9 раз.
Опыт программирования: Меньше месяца
Языки программирования: Counter-Strike 1.6

Пред.

Вернуться в Скриптинг

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2