/*********************************************************
 *         Bugblatter Admin Chat Extension - V3.1        *
 *********************************************************
 *                                                       *
 * This plug-in is linux & win32 friendly.               *
 *                                                       *
 * Version history                                       *
 *                                                       * 
 * Version 3.1:                                          *
 *                                                       *
 *  -  Initial Version                                   *
 *                                                       *
 * Version 2.6:                                          *
 *                                                       *
 *  -  Initial Version                                   *
 *********************************************************/
 
#include <admin>
#include <plugin>
#include <adminlib>
 
new g_Version[]="3.1";
 
forward BBSayAdmin(HLCommand,HLData,HLUserName,UserIndex);
 
public plugin_init() {
  plugin_registerinfo("Bugblatter's Admin message Plugin","Sends a message to all administrators playing",g_Version);
  plugin_registercmd("say_admin","BBSayAdmin",ACCESS_ALL,"Sends a message to all administrators playing");
  plugin_registercmd("respond","BBSayRespond",ACCESS_MAP,"Allows an administrator to respond to an admin say");
 
  return PLUGIN_CONTINUE;
}
 
public BBSayAdmin(HLCommand,HLData,HLUserName,UserIndex) {
  new Data[MAX_DATA_LENGTH];
  new Caller[MAX_DATA_LENGTH];
  new Msg[MAX_DATA_LENGTH];
  new name[MAX_NAME_LENGTH];
  new i;
  new sessionid;
 
  convert_string(HLData,Data,MAX_DATA_LENGTH);
  convert_string(HLUserName,Caller,MAX_NAME_LENGTH);
  get_userSessionID(Caller,sessionid);
 
  snprintf(Msg,MAX_DATA_LENGTH,"(To Admins) %s [%i]: %s",Caller,sessionid,Data);
 
  new c= maxplayercount();
  for (i=1;i<=c;i++) {
    if (playerinfo(i,name,MAX_NAME_LENGTH)!=0) {
      if (access(ACCESS_BAN,name) || access(ACCESS_KICK,name) || access(ACCESS_CONFIG,name)|| access(ACCESS_RCON,name)) {
        messageex(name,Msg,print_chat);
      }
    }
  }
 
  return PLUGIN_HANDLED;
}
 
public BBSayRespond(HLCommand,HLData,HLUserName,UserIndex) {
  new Data[MAX_DATA_LENGTH];
  new Caller[MAX_DATA_LENGTH];
  new Msg[MAX_DATA_LENGTH];
  new strSessionID[MAX_DATA_LENGTH];
  new name[MAX_NAME_LENGTH];
  new i;
  new sessionid;
 
  convert_string(HLData,Data,MAX_DATA_LENGTH);
  convert_string(HLUserName,Caller,MAX_NAME_LENGTH);
 
  strbreak(Data,strSessionID,Msg, MAX_DATA_LENGTH);
 
  sessionid=strtonum(strSessionID);
  if (sessionid == 0) {
    selfmessage("Unregognised player ID");
    return PLUGIN_HANDLED;
  }
 
 
  snprintf(Msg,MAX_DATA_LENGTH,"(Admin Response) %s [%i]: %s",Caller,sessionid,Msg);
 
  new s;
  new c= maxplayercount();
  for (i=1;i<=c;i++) {
    if (playerinfo(i,name,MAX_NAME_LENGTH,s)!=0) {
      if ((access(ACCESS_BAN,name) || access(ACCESS_KICK,name) || access(ACCESS_CONFIG,name)|| access(ACCESS_RCON,name)) ||
         (s==sessionid)){
        messageex(name,Msg,print_chat);
      }
    }
  }
 
  return PLUGIN_HANDLED;
}