Заказать игровой сервер Контакты (заказать плагин/исправить ошибки/другое) Пожертвовать Поиск

[ вход ]
[ последние сообщения ]

  • Страница 1 из 1
  • 1
Скрыть команды в чате (rtv, timeleft, nominate)
MeDestroyer Дата: Воскресенье, 01.02.2015, 14:57:10 | Сообщение # 1
Сообщений: 55
Репутация: -1 [ +/- ]
У меня есть плагин, он скрывает все команды в чате, у которых в начале знак восклицания. Как можно сделать чтобы скрывало команду rtv допустим?
Код
#include <sourcemod>

public Plugin:myinfo =
{
  name = "Hide Commands",
  author = "Rop",
  description = "hides chat commands",
  version = ".1.0.0",
  url = ""
}
   
public OnPluginStart()
{
  AddCommandListener(HideCommands,"say");
  AddCommandListener(HideCommands,"say_team");
}
   
public Action:HideCommands(client, const String:command[], argc)
{
  if(IsChatTrigger())
   return Plugin_Handled;
     
  return Plugin_Continue;
}

Гости не могут скачивать файлы
 
BarD Дата: Воскресенье, 01.02.2015, 15:12:53 | Сообщение # 2
Сообщений: 943
Репутация: 137 [ +/- ]
Код
public OnPluginStart()  
{  
   AddCommandListener(HideCommands,"say");  
   AddCommandListener(HideCommands,"say_team");  
}  
     
public Action:HideCommands(client, const String:command[], argc)  
{  
   GetCmdArgString(buffer, sizeof(buffer));
    StripQuotes(buffer);
  if (StrEqual(buffer, "rtv")) return Plugin_Handled;  
       
   return Plugin_Continue;  
}
 
MeDestroyer Дата: Воскресенье, 01.02.2015, 15:36:22 | Сообщение # 3
Сообщений: 55
Репутация: -1 [ +/- ]
А можно сделать масив, чтобы допустим где-то было
Код
hcmds
{
rtv,
timeleft,
nextmap,
}


Ну или в какой-то .ini файл сохранять чат команды?
 
BarD Дата: Воскресенье, 01.02.2015, 15:47:49 | Сообщение # 4
Сообщений: 943
Репутация: 137 [ +/- ]
Можно так, чтоб не париться:

Код
#include <sourcemod>   

new String:comms[][] = {"rtv", "timeleft", "nextmap"};

public OnPluginStart()    
{    
     AddCommandListener(HideCommands,"say");    
     AddCommandListener(HideCommands,"say_team");    
}    
         
public Action:HideCommands(client, const String:command[], argc)    
{    
     GetCmdArgString(buffer, sizeof(buffer));   
      StripQuotes(buffer);   
   for (new i=0;i<=2;i++) //Тут 2 заменяешь на "количество комманд - 1".   
{
    if (StrEqual(buffer, comms[i]))
    {
    break;
    return Plugin_Handled;    
    }
   }        
     return Plugin_Continue;    
}


В цикле 2 - это количество комманд в массиве - 1. Например, в моем коде 3 комманды: rtv, timelimit и nextmap. Я поставил в цикле 2 (3 - 1 = 2); Ну, ты понял :)


Сообщение отредактировал BarD - Воскресенье, 01.02.2015, 15:49:03
 
Sallcom Дата: Воскресенье, 01.02.2015, 16:44:39 | Сообщение # 5
Сообщений: 205
Репутация: 31 [ +/- ]
Цитата BarD ()
//Тут 2 заменяешь на "количество комманд - 1".

Зачем усложнять, если можно написать:

Код
for(new i = 0; i < sizeof(comms); i++)


Сообщение отредактировал Sallcom - Воскресенье, 01.02.2015, 16:44:52
 
BarD Дата: Воскресенье, 01.02.2015, 16:54:54 | Сообщение # 6
Сообщений: 943
Репутация: 137 [ +/- ]
Sallcom, верно) я сомневался насчёт этого, но теперь буду знать))
 
Sallcom Дата: Воскресенье, 01.02.2015, 17:39:39 | Сообщение # 7
Сообщений: 205
Репутация: 31 [ +/- ]
Лучше создать глобальную переменную и занести sizeof туда, чтобы все время не делать расчеты.


Сообщение отредактировал Sallcom - Воскресенье, 01.02.2015, 17:53:44
 
  • Страница 1 из 1
  • 1
Поиск: