/* 	PLUGIN_(LOGD)_ALLOWSOUNDS v.2
	WRITTEN BY: [WING] Sir Drink a lot
	VISIT WWW.ADMINMOD.DE
 
	Description: 	
			Die meisten meiner Plugins benutzen Sounds. Da es aber viele Spieler gibt,
			die diese Sounds nicht hören wollen, können sie diese mit der Chateingabe '.stop' oder 
			'.stopsound' für sich abschalten.
			Mit '.play' oder '.playsound' kann man die Sounds für sich auch wieder aktivieren.
 
			Es wird eine setinfo Zeile beim Spieler in der config.cfg generiert.
			Diese heißt: setinfo 'am_sound' '0/1'.
			Steht sie auf 0 werden die Sounds abgespielt. Steht sie auf 1, bekommt er keine Sounds mehr 
			von meinen Plugins vorgespielt.
 
	Wichtig:
			Spieler, die ihre config.cfg schreibgeschützt haben, müssen den Eintrag manuell vornehmen.
			Hat ein Spieler NIE eine Eingabe gemacht bzw. besitzt diese Setinfo-Zeile nicht in seiner
			config.cfg, werden ihm IMMER sounds abgespielt!
 
	Changelog:	
			- Wenn man amv_enable_beta "menu1" in der adminmod.cfg aktiviert hat, wird einem die Nachricht,
			wie man die Sounds an/ausschaltet, über Menü angezeigt.
			- Nachrichten werden in der vault.ini angelegt. Die Anzahl der Zeichen ist auf 100 begrenzt!!!
			- unnützen Code entfernt.(REPEAT_MSG and DEAD_SAY etc.)
 
*/
 
 
#include <core>
#include <console>
#include <string>
#include <admin>
#include <adminlib>
 
new STRING_VERSION[MAX_DATA_LENGTH] = "2.0_08.03.04";
 
new Key[]="am_sound";
 
#define ACCESS_CONSOLE 131072
 
new g_menuenabled;
 
new g_ConnectMsg1[MAX_TEXT_LENGTH];
new g_ConnectMsg0[MAX_TEXT_LENGTH];
 
public plugin_init() {
	plugin_registerinfo("SDAL ALLOWSOUND","Clients can decide, if they want hear custom sounds",STRING_VERSION);
	plugin_registercmd("allowsound_team","allowsound_team",ACCESS_CONSOLE);
	plugin_registercmd("say","HandleSay",ACCESS_ALL);
	plugin_registerhelp("say",ACCESS_ALL,"say '.stop' or '.stopsound': disables all custom sounds for you");
	plugin_registerhelp("say",ACCESS_ALL,"say '.play' or '.playsound': enables all custom sounds for you");
	new sValue[MAX_TEXT_LENGTH];
	getstrvar( "amv_enable_beta", sValue, MAX_TEXT_LENGTH );
	if(strstrx(sValue,"menu1")!=-1){
		g_menuenabled=1;
	}
	get_vaultdata("ALLOWSOUND_MSG1",g_ConnectMsg1,MAX_TEXT_LENGTH);
	get_vaultdata("ALLOWSOUND_MSG0",g_ConnectMsg0,MAX_TEXT_LENGTH);
	exec( "logd_reg 54 admin_command allowsound_team" );		/*ENTER-EVENT*/
 
	return PLUGIN_CONTINUE;
}
 
/*Diese Funktion ist in allen Plugins von mir enthalten.*/
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;
		}
	}
	return 0;
}
 
public HandleSay(HLCommand,HLData,HLUserName,UserIndex) {
	new Data[MAX_DATA_LENGTH];
	new User[MAX_NAME_LENGTH];
	new Msg [MAX_TEXT_LENGTH];
	new SetInfo[MAX_TEXT_LENGTH];
 
	convert_string(HLData,Data,MAX_DATA_LENGTH);
	convert_string(HLUserName,User,MAX_DATA_LENGTH);
	strstripquotes(Data);
 
	if(strcasecmp(Data, ".stopsound") ==0 || strcasecmp(Data, ".stop") ==0){
		snprintf(Msg,MAX_TEXT_LENGTH,"You won`t hear the custom sounds any longer. Use '.playsound' or '.play' if you want to enable them.");
		messageex(User,Msg,print_chat);
		snprintf(SetInfo,MAX_TEXT_LENGTH,"setinfo ^"%s^" ^"0^"",Key);
		execclient(User,SetInfo);
		return PLUGIN_HANDLED;
        }else if(strcasecmp(Data, ".playsound") ==0 || strcasecmp(Data, ".play") ==0){
		snprintf(Msg,MAX_TEXT_LENGTH,"You have enabled custom sounds. Use '.stopsound' or '.stop' if you want to turn them off.");
		messageex(User,Msg,print_chat);
		snprintf(SetInfo,MAX_TEXT_LENGTH,"setinfo ^"%s^" ^"1^"",Key);
		execclient(User,SetInfo);
		return PLUGIN_HANDLED;
	}
	return PLUGIN_CONTINUE;
}
 
 
public allowsound_team(HLCommand,HLUserIndex){
	new strUserIndex[MAX_NUMBER_LENGTH];
	new strName[MAX_NAME_LENGTH];
	new UserIndex;
	convert_string(HLUserIndex, strUserIndex, MAX_NUMBER_LENGTH);
	UserIndex=strtonum(strUserIndex);
	if(playerinfo(UserIndex,strName,MAX_NAME_LENGTH)){
		set_timer("display_text",5,0,strName);
	}
	return PLUGIN_CONTINUE;
}
 
public display_text(Timer,Repeat,HLUser,HLParam){
	new Text[MAX_TEXT_LENGTH];
	new strName[MAX_NAME_LENGTH];
	convert_string(HLParam, strName, MAX_NAME_LENGTH);
 
	if(allowsound(strName)){
		if(g_menuenabled){
			snprintf(Text,MAX_TEXT_LENGTH,"\yHi %s!^n^n%s",strName,g_ConnectMsg1);
			menu(strName,Text,1023,8);
		}else{
			snprintf(Text,MAX_TEXT_LENGTH,"Hi %s!^n%s",strName,g_ConnectMsg1);
			strsubst(Text,"\r","",MAX_TEXT_LENGTH);
			strsubst(Text,"\w","",MAX_TEXT_LENGTH);
			strsubst(Text,"\y","",MAX_TEXT_LENGTH);
			messageex(strName,Text,print_tty);
		}
	}else{
		if(g_menuenabled){
			snprintf(Text,MAX_TEXT_LENGTH,"\yHi %s!^n^n%s",strName,g_ConnectMsg0);
			menu(strName,Text,1023,8);
		}else{
			snprintf(Text,MAX_TEXT_LENGTH,"Hi %s!^n%s",strName,g_ConnectMsg0);
			strsubst(Text,"\r","",MAX_TEXT_LENGTH);
			strsubst(Text,"\w","",MAX_TEXT_LENGTH);
			strsubst(Text,"\y","",MAX_TEXT_LENGTH);
			messageex(strName,Text,print_tty);
		}
	}
}