﻿////////////////////////////////////////////////////////
// ForceRate version 0.4c by Zero (www.noaim.eu) ///////
////////////////////////////////////////////////////////
// Please don't edit the Lines below ///////////////////
////////////////////////////////////////////////////////

////////////////////////////////////////////////////////
// Модифицировано ATAMAH'ом (ICQ: 305-839) /////////////
// Добавлена загрузка параметров из внешнего конфига, //
// проверка значения rate и формат сообщения при кике //
////////////////////////////////////////////////////////
// Modified by ATAMAH (ICQ: 305-839) ///////////////////
// Added loading parameters from extern config file, ///
// verify rate variable and editing kick message ///////
////////////////////////////////////////////////////////

block load
{
	es_xset forceratemod ForceRate_Mod_1.2
	es_xmakepublic forceratemod

	es_xset c_r 0
	es_xset c_cl_ur 0
	es_xset c_cl_cr 0
	es_xset s_motd 0
	es_xset kickmsg 0

	//Путь к файлу конфига
	//Path to config file
	es_mexec ../addons/eventscripts/forceratemod/forcerate.cfg

	es_xset cmd_string 0

	//Создаем строку с командами вида "rate 25000;cl_updaterate 67;cl_cmdrate 67;chooseteam"
	//"chooseteam" в конце обязательно нужна для появления меню выбора команды после нажатия "ОК"
	//Creating string like "rate 25000;cl_updaterate 67;cl_cmdrate 67;chooseteam"
	//"chooseteam" in end need for show the select team menu after clicking "OK"
	es_format cmd_string "rate %1;cl_cmdrate %2;cl_updaterate %3;cl_interp 0.01;chooseteam" server_var(c_r) server_var(c_cl_cr) server_var(c_cl_ur)

	es_xset forcerate_exists 0
	es_xset forcerate_format 0
	es_xset kickformat 0
	es_xset forcerate_user 0
	es_keygroupcreate forcerate_users 0
	es_xset forcerate_value 0
	es_xset forcerate_old 0
}

event player_activate
{
	es_keycreate forcerate_users event_var(userid)

	//Force them to set certain variables.
	es_format forcerate_format "es_xset forcerate_user %1;es_xdoblock forceratemod/enforcevars" event_var(userid)
	es_delayed 1 es_xnq server_var(forcerate_format)
}

block enforcevars
{
	es_xusermsg create forcerate_motd VGUIMenu
	es_xusermsg write string forcerate_motd info
	es_xusermsg write byte forcerate_motd 1
	es_xusermsg write byte forcerate_motd 4

	es_xusermsg write string forcerate_motd type
	es_xusermsg write string forcerate_motd 2

	//Передаем ссылку на рекламу motd, которая выводится сразу после подключения
	//URL to motd file
	es_xusermsg write string forcerate_motd msg
	es_usermsg write string forcerate_motd server_var(s_motd)

	//Передаем команды для установки рейтов
	//cmd for changing rates
	es_xusermsg write string forcerate_motd cmd
	es_usermsg write string forcerate_motd server_var(cmd_string)

	es_usermsg send forcerate_motd server_var(forcerate_user)
	es_xusermsg delete forcerate_motd
}

event player_team
{
	if (event_var(team) > 0) do
	{
		if (event_var(es_steamid) != 0) do
		{
			es_xset flag_exist 0			

			es_exists flag_exist key forcerate_users event_var(userid)
			
			ifx false(flag_exist) do
			{
				es_keycreate forcerate_users event_var(userid)
			}

			es_keygetvalue forcerate_exists forcerate_users event_var(userid) authed

			ifx false(forcerate_exists) do
			{
				es_keysetvalue forcerate_users event_var(userid) authed 1

				//Query variables.
				es_queryclientvar event_var(userid) rate
				es_queryclientvar event_var(userid) cl_cmdrate
				es_queryclientvar event_var(userid) cl_updaterate
			}
		}
	}
}

event player_disconnect
{
	es_xset flag_exist 0			

	es_exists flag_exist key forcerate_users event_var(userid)
			
	ifx true(flag_exist) do
	{
		es_keydelete forcerate_users event_var(userid)
	}
}

event es_player_variable
{
	if (event_var(variable) == rate) do
	{
		if (event_var(status) == success) do
		{
			if (event_var(value) == server_var(c_r)) do
			{
				es_delayed 10 es_xqueryclientvar event_var(userid) rate
			}
			else do
			{	
				es_format kickformat server_var(kickmsg) event_var(variable) server_var(c_r)
				es_delayed 20 es kickid event_var(userid) server_var(kickformat)
			}
		}
		else do
		{
			es_format kickformat server_var(kickmsg) event_var(variable) server_var(c_r)
			es_delayed 30 es kickid event_var(userid) server_var(kickformat)
		}
	}

	if (event_var(variable) == cl_cmdrate) do
	{
		if (event_var(status) == success) do
		{
			if (event_var(value) == server_var(c_cl_cr)) do
			{
				es_delayed 10 es_xqueryclientvar event_var(userid) cl_cmdrate
			}
			else do
			{
				es_format kickformat server_var(kickmsg) event_var(variable) server_var(c_cl_cr)
				es_delayed 20 es kickid event_var(userid) server_var(kickformat)
			}
		}
		else do
		{
			es_format kickformat server_var(kickmsg) event_var(variable) server_var(c_cl_cr)
			es_delayed 30 es kickid event_var(userid) server_var(kickformat)
		}
	}

	if (event_var(variable) == cl_updaterate) do
	{
		if (event_var(status) == success) do
		{
			if (event_var(value) == server_var(c_cl_ur)) do
			{
				es_delayed 10 es_xqueryclientvar event_var(userid) cl_updaterate
			}
			else do
			{
				es_format kickformat server_var(kickmsg) event_var(variable) server_var(c_cl_ur)
				es_delayed 20 es kickid event_var(userid) server_var(kickformat)
			}
		}
		else do
		{
			es_format kickformat server_var(kickmsg) event_var(variable) server_var(c_cl_ur)
			es_delayed 30 es kickid event_var(userid) server_var(kickformat)
		}
	}
}