/* SdalĀ“s PLUGIN-SPEECH with new command speakto()*/
/* Using plugin_sdal_allowsounds which manages if the client want to hear the voice! */
/* (c) 2003 by Sir Drink a lot */
 
 
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
 
new STRING_VERSION[MAX_DATA_LENGTH] = "15.06.03";
 
new Key[]="am_sound";
 
public allowsound(User[]){
	new Info[MAX_NUMBER_LENGTH];
	new iInfo;
	new Authid[MAX_AUTHID_LENGTH];
	get_userAuthID(User,Authid,MAX_AUTHID_LENGTH);
	if(strcmp(Authid,"BOT")!=0){
		get_userinfo(User,Key,Info,MAX_NUMBER_LENGTH);
		iInfo=strtonum(Info);
		if(strlen(Info)==0 || iInfo>=1 ){/*damit wird automatisch immer der Sound auf 1 gesetzt,wenn kein setinfo vorhanden, bis 'stop' eingegeben wird*/
			return 1;
		}else{
			return 0;
		}
	}
	return 0;
}
 
public admin_speak(HLCommand,HLData,HLUserName,UserIndex) {
 
	new Data[MAX_DATA_LENGTH];
	new Output[MAX_TEXT_LENGTH];
	new Target[MAX_NAME_LENGTH];
	new TargetName[MAX_NAME_LENGTH];
 
	convert_string(HLData,Data,MAX_DATA_LENGTH);
 
	strbreak(Data,Target,Output,MAX_TEXT_LENGTH);
 
	if(check_user(Target) == 1){
		get_username(Target,TargetName,MAX_NAME_LENGTH);
		if(allowsound(Target)==1){
			speakto(TargetName,Output);
		}
	}else{
		selfmessage("Unrecognized player: ");
		selfmessage(Target);
	}
	return PLUGIN_HANDLED;
}
 
 
public admin_speakall(HLCommand,HLData,HLUserName,UserIndex) {
 
	new Data[MAX_DATA_LENGTH];
	new Target[MAX_NAME_LENGTH];
	new i;
	new maxplayers=maxplayercount();
 
	convert_string(HLData,Data,MAX_DATA_LENGTH);
 
	for(i=1;i<=maxplayers;i++){
		if(playerinfo(i,Target,MAX_NAME_LENGTH)){
			if(allowsound(Target)==1){
				speakto(Target,Data);
			}
		}
	}
	return PLUGIN_HANDLED;
}
 
public admin_speakdead(HLCommand,HLData,HLUserName,UserIndex) {
 
	new Data[MAX_DATA_LENGTH];
	new Target[MAX_NAME_LENGTH];
	new i;
	new maxplayers=maxplayercount();
	new iDead;
	new dummy;
 
	convert_string(HLData,Data,MAX_DATA_LENGTH);
 
	for(i=1;i<=maxplayers;i++){
		if(playerinfo(i,Target,MAX_NAME_LENGTH,dummy,dummy,dummy,iDead)){
			if(iDead==1){
				if(allowsound(Target)==1){
					speakto(Target,Data);
				}
			}
		}
	}
	return PLUGIN_HANDLED;
}
 
public admin_speakteam(HLCommand,HLData,HLUserName,UserIndex) {
 
	new Data[MAX_DATA_LENGTH];
	new Target[MAX_NAME_LENGTH];
	new TargetTeam[MAX_NAME_LENGTH];
	new Output[MAX_TEXT_LENGTH];
	new i;
	new maxplayers=maxplayercount();
	new iTargetTeam;
	new iTeam;
	new dummy;
	convert_string(HLData,Data,MAX_DATA_LENGTH);
 
	strbreak(Data,TargetTeam,Output,MAX_TEXT_LENGTH);
 
	iTargetTeam=strtonum(TargetTeam);
	for(i=1;i<=maxplayers;i++){
		if(playerinfo(i,Target,MAX_NAME_LENGTH,dummy,dummy,iTeam,dummy)){
			if(iTeam==iTargetTeam){
				if(allowsound(Target)==1){
					speakto(Target,Output);
				}
			}
		}
	}
	return PLUGIN_HANDLED;
}
 
public plugin_init() {
	plugin_registerinfo("PLUGIN_SDAL_SPEECH","Speak to clients with HL-Voice",STRING_VERSION);
	plugin_registercmd("admin_speak","admin_speak",ACCESS_VOTE_MAP,"admin_speak <Person> <Output>: speak to single person with HL-Voice");
	plugin_registercmd("admin_speakall","admin_speakall",ACCESS_VOTE_MAP,"admin_speakall <Output>: speak to all clients with HL-Voice");
	plugin_registercmd("admin_speakdead","admin_speakdead",ACCESS_VOTE_MAP,"admin_speadead <Output>: speak to all clients who are dead with HL-Voice");
	plugin_registercmd("admin_speakteam","admin_speakteam",ACCESS_VOTE_MAP,"admin_speakteam <TeamNr> <Output>: speak to all clients who are in same team with HL-Voice");
	return PLUGIN_CONTINUE;
}