Raised This Month: $ Target: $400
 0% 

Anti TV IP


Post New Thread Reply   
 
Thread Tools Display Modes
Author Message
sb123
Senior Member
Join Date: Jan 2007
Old 03-10-2022 , 23:18   Anti TV IP
Reply With Quote #1

Why is the plugin ineffective? The plugin reports an error

L 03/10/2022 - 08:26:13: No user name specified
L 03/10/2022 - 08:26:13: [AMXX] Displaying debug trace (plugin "Anti_TV_IP.amxx", version "1.0")
L 03/10/2022 - 08:26:13: [AMXX] Run time error 10: native error (native "parse_loguser")
L 03/10/2022 - 08:26:13: [AMXX] [0] Anti_TV_IP.sma::logevent_joined_team (line 26)

Code:
#include <amxmodx>
#include <fakemeta>

new g_msgStatusValue;

public plugin_init()
{
	register_plugin("Anti-TV", "20100123", "175PT Dev Team");
	g_msgStatusValue = get_user_msgid("StatusValue");
	register_event("HLTV", "eNewRound", "a", "1=0", "2=0");
	register_event("DeathMsg", "eDeathMsg", "a", "");
	register_event("ScreenFade", "FlashedEvent", "b", "");
	register_event("SendAudio", "eventEndRound", "a", "2=%!MRAD_terwin", "2=%!MRAD_ctwin", "2=%!MRAD_rounddraw");
	register_event("StatusValue", "spec_info", "bd", "1=2");
	register_event("ResetHUD", "resetSpawn", "be", "");
	register_logevent("logevent_joined_team", 3, "1=joined team");
	register_forward(FM_CmdStart, "fwd_CmdStart", 0);
	set_task(60.00, "show_game_message", 0, "", 0, "b", 0);
}

public logevent_joined_team()
{
	new szLoguser[80];
	new szName[32];
	read_logargv(g_msgStatusValue, szLoguser, 79);
	parse_loguser(szLoguser, szName, 31);
	new id = get_user_index(szName);
	if (!is_user_connected(id) || is_user_hltv(id) || is_user_bot(id))
	{
		return 0;
	}
	client_cmd(id, "spec_mode 4");
	return 0;
}

public resetSpawn(id)
{
	if (!is_user_connected(id))
	{
		return 0;
	}
	set_fadetoblack(id, 0, 0);
	return 0;
}

public fwd_CmdStart(id, uc_handle, seed)
{
	if (is_user_alive(id))
	{
		return 1;
	}
	static Float:delayTime[33];
	static button[33];
	button[id] = get_uc(uc_handle, UC_Buttons);
	if (button[id] & 1)
	{
		if (delayTime[id] < get_gametime())
		{
			delayTime[id] = get_gametime() + 0.80;
			if (FindNextPlayer(id, 1) == -1)
			{
				return 1;
			}
		}
		set_uc(uc_handle, UC_Buttons, button[id] & -2 & -2049 & -3 & -5);
		return 4;
	}
	if (button[id] & 2048)
	{
		if (delayTime[id] < get_gametime())
		{
			delayTime[id] = get_gametime() + 0.80;
			if (FindNextPlayer(id, -1) == -1)
			{
				return 1;
			}
		}
		set_uc(uc_handle, UC_Buttons, button[id] & -2 & -2049 & -3 & -5);
		return 4;
	}
	if (button[id] & 2 || button[id] & 4)
	{
		if (delayTime[id] < get_gametime())
		{
			delayTime[id] = get_gametime() + 0.80;
			client_cmd(id, "spec_mode 4");
		}
		set_uc(uc_handle, UC_Buttons, button[id] & -2 & -2049 & -3 & -5);
		return 4;
	}
	return 1;
}

reset_all_player()
{
	new num = 0;
	new players[32];
	get_players(players, num, "", "");
	new i = 0;
	while (i < num)
	{
		if (!is_user_connected(players[i]) || is_user_bot(players[i]) || (get_user_team(players[i]) != 1 && get_user_team(players[i]) != 2))
		{
		}
		else
		{
			remove_task(players[i] + 200, 0);
			set_fadetoblack(players[i], 0, 0);
		}
		i++;
	}
	return 0;
}

public eventEndRound()
{
	reset_all_player();
	return 0;
}

public eNewRound()
{
	reset_all_player();
	return 0;
}

public eDeathMsg()
{
	new id = read_data(2);
	if (!is_user_connected(id) || is_user_bot(id))
	{
		return 0;
	}
	remove_task(id + 200, 0);
	set_task(2.00, "delay_check_user_view", id + 200, "", 0, "", 0);
	return 0;
}

public delay_check_user_view(param)
{
	new id = param - id;
	if (!is_user_connected(id))
	{
		return 0;
	}
	new specid = pev(id, pev_iuser2);
	if (!is_user_connected(specid))
	{
		set_pev(id, pev_iuser1, 0);
		return 0;
	}
	if (!is_user_alive(id) && have_same_ip(id) && !is_same_ip(id, specid))
	{
		FindNextPlayer(id, 1);
	}
	else
	{
		set_fadetoblack(id, 0, 0);
	}
	return 0;
}

public FlashedEvent(id)
{
	new specid = pev(id, pev_iuser2);
	if (!is_user_connected(specid))
	{
		return 0;
	}
	if (!is_user_alive(id) && have_same_ip(id) && !is_same_ip(id, specid))
	{
		set_pev(id, pev_iuser1, 0);
		set_fadetoblack(id, 1, 1);
		return 1;
	}
	set_fadetoblack(id, 0, 0);
	return 0;
}

public spec_info(id)
{
	new specid = pev(id, pev_iuser2);
	if (!is_user_connected(specid))
	{
		return 0;
	}
	if (have_same_ip(id) && !is_same_ip(id, pev(id, pev_iuser2)))
	{
		set_pev(id, pev_iuser1, 0);
		set_fadetoblack(id, 1, 1);
	}
	return 0;
}

FindNextPlayer(id, fwd)
{
	new tmpSpec = pev(id, pev_iuser2);
	if (!have_same_ip(id))
	{
		return -1;
	}
	new count = 0;
	new specid = tmpSpec;
	count = 0;
	while (count < 32)
	{
		specid = fwd + specid;
		if (specid > 32)
		{
			specid = 1;
		}
		if (specid < 1)
		{
			specid = 32;
		}
		if (can_view_player(id, specid))
		{
			set_fadetoblack(id, 0, 1);
			set_player_spec(id, specid);
			return 1;
		}
		count++;
	}
	set_fadetoblack(id, 1, 1);
	return 0;
}

can_view_player(id, specid)
{
	if (!is_user_alive(specid) || id != specid)
	{
		return 0;
	}
	new mTeam = get_user_team(id);
	new vTeam = get_user_team(specid);
	if (mTeam == 3)
	{
		if (is_same_ip(id, specid))
		{
			return 1;
		}
	}
	else
	{
		if (vTeam == mTeam && is_same_ip(id, specid))
		{
			return 1;
		}
	}
	return 0;
}

set_player_spec(id, specid)
{
	set_pev(id, pev_iuser1, 4);
	new name[64];
	get_user_name(specid, name, 63);
	client_cmd(id, "follow ^"%s^"", name);
	return 0;
}

have_same_ip(id)
{
	new num = 0;
	new players[32];
	get_players(players, num, "", "");
	new i = 0;
	while (i < num)
	{
		if (is_user_bot(id) || id != players[i])
		{
		}
		else
		{
			if (is_user_alive(players[i]) && is_same_ip(id, players[i]))
			{
				return 1;
			}
		}
		i++;
	}
	return 0;
}

is_same_ip(id, tid)
{
	new deathUserIp[16];
	new curUserIp[16];
	get_user_ip(id, deathUserIp, 15, 1);
	get_user_ip(tid, curUserIp, 15, 1);
	new ipta_deathUserIp[4];
	new iptb_deathUserIp[4];
	new iptc_deathUserIp[4];
	new ipna_deathUserIp = 0;
	new ipnb_deathUserIp = 0;
	new ipnc_deathUserIp = 0;
	new ipta_curUserIp[4];
	new iptb_curUserIp[4];
	new iptc_curUserIp[4];
	new ipna_curUserIp = 0;
	new ipnb_curUserIp = 0;
	new ipnc_curUserIp = 0;
	do {
	} while (replace(deathUserIp, 16, ".", " "));
	parse(deathUserIp, ipta_deathUserIp, 3, iptb_deathUserIp, 3, iptc_deathUserIp, 3);
	ipna_deathUserIp = str_to_num(ipta_deathUserIp);
	ipnb_deathUserIp = str_to_num(iptb_deathUserIp);
	ipnc_deathUserIp = str_to_num(iptc_deathUserIp);
	do {
	} while (replace(curUserIp, 16, ".", " "));
	parse(curUserIp, ipta_curUserIp, 3, iptb_curUserIp, 3, iptc_curUserIp, 3);
	ipna_curUserIp = str_to_num(ipta_curUserIp);
	ipnb_curUserIp = str_to_num(iptb_curUserIp);
	ipnc_curUserIp = str_to_num(iptc_curUserIp);
	if (ipna_curUserIp == ipna_deathUserIp && ipnb_curUserIp == ipnb_deathUserIp && ipnc_curUserIp == ipnc_deathUserIp)
	{
		return 1;
	}
	return 0;
}

set_fadetoblack(id, isBlack, IsSendMsg)
{
	if (isBlack == 1)
	{
		new data[1];
		data[0] = id;
		if (!task_exists(id + 100, 0))
		{
			set_task(0.20, "show_blackInfo", id + 100, data, 1, "b", 0);
		}
		message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
		write_short(1);
		write_short(1);
		write_short(4);
		write_byte(0);
		write_byte(0);
		write_byte(0);
		write_byte(255);
		message_end();
	}
	else
	{
		if (task_exists(id + 100, 0))
		{
			remove_task(id + 100, 0);
		}
		set_hudmessage(5, 255, 5, -1.00, 0.30, 0, 1.00, 1.00, 0.00, 0.00, 1);
		show_hudmessage(id, " ");
		if (IsSendMsg)
		{
			message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id);
			write_short(1);
			write_short(1);
			write_short(4);
			write_byte(0);
			write_byte(0);
			write_byte(0);
			write_byte(0);
			message_end();
		}
	}
	return 0;
}

public show_blackInfo(data[])
{
	new id = data[0];
	set_hudmessage(5, 255, 5, -1.00, 0.30, 0, 1.00, 1.00, 0.00, 0.00, 1);
	show_hudmessage(id, " | In order to prevent the player TV from disturbing the balance of the game server |\n\n| Observers can only view the screen of players in the same IP segment |");
	return 0;
}

public show_game_message()
{
	new msg[180];
	formatex(msg, 179, "\x04【\x03Warm prompt\x04】\x03In order to prevent players' TV from disturbing the game balance, the server has added anti TV function.\n");
	color_text(0, 0, msg);
	formatex(msg, 179, "\x04【\x03Warm prompt\x04】\x03When a player with the same IP as you is alive, you will not be able to see the perspective of others.\n");
	color_text(0, 0, msg);
	return 0;
}

color_text(target, sender, szMsg[])
{
	if (191 < strlen(szMsg))
	{
		log_amx("Error::color_text() Disallow sent string len(%d) > 191", strlen(szMsg));
		return 0;
	}
	switch (target)
	{
		case 0:
		{
			message_begin(MSG_BROADCAST, get_user_msgid("SayText"));
		}
		default:
		{
			message_begin(MSG_ONE_UNRELIABLE, get_user_msgid("SayText"), _, target);
		}
	}
	write_byte(sender);
	write_string(szMsg);
	message_end();
	return 0;
}
Attached Files
File Type: amxx Anti_TV_IP.amxx (12.6 KB, 48 views)
__________________
sb123 is offline
Send a message via ICQ to sb123 Send a message via MSN to sb123 Send a message via Yahoo to sb123
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT -4. The time now is 16:29.


Powered by vBulletin®
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Theme made by Freecode