Day of Defeat Plugins Community
This site is an archive — everything is readable and downloadable, nothing can be posted. Admin

timebomb

by Unknown · 2005-02-01

recovered from the server

From the first post

Recovered from the archived server. This was never posted on the forum, so there is no thread behind it and no author post to quote — the attribution below comes from the plugin's own register_plugin() call where it has one.

Files

timebomb.amxx Compiled Plugin 33 KB Download
timebomb_272.amxx Compiled Plugin 34 KB Download

Decompiled source reconstructed

timebomb.amxx was published compiled only. This Pawn was recovered from the bytecode with Lysis — 1499 lines. Strings, cvars and the plugin registration survive; local variable names do not. It is an approximation, not the author's file.

// Decompiled from timebomb.amxx by Lysis.n// This is RECONSTRUCTED source, not the author's original: withoutn// debug symbols the variable names are lost and control flow isn// rebuilt from bytecode. Treat it as a readable approximation.nnnew g_vare5c = 1;nnew g_vare64;nnew g_varc = 15;nnew g_var8 = 40;nnew g_var888;nnew g_var2d8;nnew g_var894;nnew g_var890;nnew g_var88c;nnew g_vare60 = 1;nnew g_var89c;nnew g_var898;nnew g_var0 = 450;nnew g_var4 = 700;nnew g_varc2c;nnew g_varc30;nnew g_varc3c;nnew g_varc40;nnew g_varc44;nnew g_varc48;nnew g_varc34;nnew g_varc38;npublic HandleSay(_arg0)n{n	new var1 = 0;n	read_args(var1, 192);n	remove_quotes(var1);n	if (HandleSay2(_arg0, var1))n	{n		return 1;n	}n	return 0;n}nnpublic HandleSay2(_arg0, _arg1)n{n	new var2;n	var2 = get_gametime();n	new var1;n	if (equal(_arg1, "kamik", 5) || equal(_arg1, "kamak", 5))n	{n		if (g_vare5c == 0)n		{n			client_print(_arg0, "", "[AMXX] :  Admin has disabled the ability to kamikaze.");n			return 1;n		}n		if (is_user_alive(_arg0) == 0)n		{n			client_print(_arg0, "", "[AMXX] :  You cannot become a bomb, you are already dead.");n			return 1;n		}n		if (g_vare64 == 1)n		{n			client_print(_arg0, "", "[AMXX] :  Its too early in the round to become a bomb.");n			return 1;n		}n		if (0 < 3280[_arg0])n		{n			client_print(_arg0, "", "[AMXX] :  You are the bomb already.");n			return 1;n		}n		if (2472[_arg0] == 1)n		{n			client_print(_arg0, "", "[AMXX] :  You are a spy, spys cannot become kamikazes.");n			return 1;n		}n		new var3;n		var3 = get_maxplayers() + 1;n		new var4 = 1;n		while (var4 < var3)n		{n			if (3412[var4] == 1)n			{n				client_print(_arg0, "", "[AMXX] :  Wait your turn, someone else is the kamikazi.");n				return 1;n			}n			var4++;n		}n		if (sub_2fc(3148[_arg0], var2))n		{n			client_print(_arg0, "", "[AMXX] :  You were just a bomb a short while ago, give someone else a chance.");n			return 1;n		}n		2340[_arg0] = 0;n		3412[_arg0] = 1;n		3280[_arg0] = g_varc;n		3148[_arg0] = sub_174(var2, g_var8);n		new var5 = 0;n		get_user_name(_arg0, var5, 32);n		sub_b0cc(_arg0);n		client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n		client_print(g_var0, "", "[AMXX] :  %s has become a human timebomb, run for cover!!!", var5);n		return 0;n	}n	return 0;n}nnpublic admin_timebomb(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 2))n	{n		return 1;n	}n	new var1 = 0;n	read_argv(1, var1, 32);n	new var2;n	var2 = sub_bd0(_arg0, var1, 1);n	if (!var2)n	{n		return 1;n	}n	if (is_user_alive(var2) == 0)n	{n		console_print(_arg0, "[AMXX] The player is dead and cannot be bombed");n		return 1;n	}n	if (0 < 3280[var2])n	{n		console_print(_arg0, "[AMXX] :  That player is already a bomb");n		return 1;n	}n	2340[var2] = 0;n	3280[var2] = g_varc;n	new var3 = 0;n	get_user_name(var2, var3, 32);n	client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n	client_print(g_var0, "", "[AMXX] :  %s has become a human timebomb, run for cover!!!", var3);n	new var4 = 0;n	new var5 = 0;n	new var6 = 0;n	get_user_authid(var2, var5, 16);n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var6, 32);n	sub_b0cc(var2);n	log_amx(""%s<%d><%s><>" timebomb "%s<%d><%s><>"", var6, get_user_userid(_arg0), var4, var3, get_user_userid(var2), var5);n	console_print(_arg0, "[AMXX] Client "%s" bombed", var3);n	client_print(g_var0, "", "[AMXX] Admin:    %s  has bombed  %s", var6, var3);n	return 1;n}nnpublic admin_votebomb(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 2))n	{n		return 1;n	}n	new var3;n	var3 = get_cvar_float("amx_last_voting");n	if (sub_2fc(var3, get_gametime()))n	{n		console_print(_arg0, "There is already one voting...");n		return 1;n	}n	new var1;n	if (var3 && sub_2fc(floatadd(var3, get_cvar_float("amx_vote_delay")), get_gametime()))n	{n		console_print(_arg0, "Voting not allowed at this time");n		return 1;n	}n	new var4 = 0;n	get_cvar_string("amx_vote_inprogress", var4, 32);n	if (equal(var4, 13592, 1))n	{n		new var5 = 0;n		read_argv(1, var5, 32);n		new var6;n		var6 = sub_bd0(_arg0, var5, 1);n		if (!var6)n		{n			return 1;n		}n		new var7 = 0;n		new var8 = 0;n		get_user_name(var6, var5, 32);n		if (is_user_alive(var6) == 0)n		{n			client_print(_arg0, 2, "[AMXX] %s is dead and cannot be voted a bomb.", var5);n			return 1;n		}n		format(var7, 256, "yShould we blow up %s?wnn1.  Yesn2.  No", var5);n		num_to_str(var6, 1640/* ERROR unknown load Constant */ + 1640, 32);n		var8 = 3;n		new var9 = 0;n		new var10 = 0;n		get_user_authid(_arg0, var9, 16);n		get_user_name(_arg0, var10, 32);n		log_amx(""%s<%d><%s><>" vote bomb (target "%s")", var10, get_user_userid(_arg0), var9, var5);n		new var11;n		var11 = floatadd(1073741824, get_cvar_float("amx_vote_time"));n		set_cvar_float("amx_last_voting", floatadd(get_gametime(), var11));n		g_var888 = get_cvar_float("amx_votetimebomb_ratio");n		copy(1128, 128, "bomb %s");n		new var12 = 0;n		while (var12 < 33)n		{n			732[var12][1] = 0;n			var12++;n		}n		g_var2d8 += 1;n		set_cvar_string("amx_vote_inprogress", 14432);n		ejl_vault("WRITE", "CURRENT_VOTE", "TIMEBOMB");n		g_var894 = 1;n		g_var890 = 0;n		new var13 = 0;n		new var14;n		var14 = get_maxplayers() + 1;n		new var15 = 1;n		while (var15 < var14)n		{n			get_user_team(var15, var13, 33);n			new var2;n			if (equali(var13, "UNAS", g_var4) || equali(var13, "SPEC", g_var4) || get_user_time(var15, g_var0) != 0)n			{n				show_menu(var15, var8, var7, floatround(var11, g_var0), {0});n				g_var890 += 1;n			}n			var15++;n		}n		set_task(var11, "check_votes", g_var0, {0}, g_var0, {0}, g_var0);n		g_var88c = 0;n		client_print(_arg0, 2, "[AMXX] Voting has started...");n		new var16 = 0;n		while (var16 < 4)n		{n			2168[var16] = 0;n			var16++;n		}n	}n	elsen	{n		client_print(_arg0, 2, "[AMXX] Voting not allowed yet.");n	}n	return 1;n}nnpublic amx_tb_credit(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (2 > read_argc())n	{n		new var2 = 0;n		if (g_vare60 == 1)n		{n			copy(var2, g_var4, "ON");n		}n		elsen		{n			copy(var2, g_var4, "OFF");n		}n		console_print(_arg0, "[AMXX] Usage: amx_timebomb_credit < on | off >     Currently: %s", var2);n		return 1;n	}n	new var3 = 0;n	read_argv(1, var3, 10);n	new var1;n	if (equal(var3, "on", 2) || equal(var3, 6104, 1))n	{n		g_vare60 = 1;n		console_print(_arg0, "[AMXX] Kamikaze frag credit is now ON");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode ON");n	}n	elsen	{n		g_vare60 = 0;n		console_print(_arg0, "[AMXX] Kamikaze frag credit is now OFF");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode OFF");n	}n	new var4 = 0;n	new var5 = 0;n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var5, 32);n	log_amx(""%s<%d><%s><>" kamikazi_frag_cr %s", var5, get_user_userid(_arg0), var4, var3);n	return 1;n}nnpublic amx_tb_credit_d(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_vare60 == 0)n	{n		ejl_vault("WRITE", "Kamikazi_FragCredit", "off");n		console_print(_arg0, "[AMXX] Kamikaze frag credit:  OFF   is now the default.");n	}n	elsen	{n		ejl_vault("WRITE", "Kamikazi_FragCredit", "on");n		console_print(_arg0, "[AMXX] Kamikaze frag credit:  ON    is now the default.");n	}n	new var1 = 0;n	new var2 = 0;n	get_user_authid(_arg0, var1, 16);n	get_user_name(_arg0, var2, 32);n	log_amx(""%s<%d><%s><>" kamikazi_frag_cr_d", var2, get_user_userid(_arg0), var1);n	return 1;n}nnpublic amx_tfc_by(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (2 > read_argc())n	{n		new var2 = 0;n		if (g_var89c == 1)n		{n			copy(var2, g_var4, "ON");n		}n		elsen		{n			copy(var2, g_var4, "OFF");n		}n		console_print(_arg0, "[AMXX] Usage: amx_timebomb_tfc_b < on | off >     Currently: %s", var2);n		return 1;n	}n	new var3 = 0;n	read_argv(1, var3, 10);n	new var1;n	if (equal(var3, "on", 2) || equal(var3, 8104, 1))n	{n		g_var89c = 1;n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage ON");n		client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage ON");n	}n	elsen	{n		g_var89c = 0;n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage is now OFF");n		client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage OFF");n	}n	new var4 = 0;n	new var5 = 0;n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var5, 32);n	log_amx(""%s<%d><%s><>" tfc_bystander %s", var5, get_user_userid(_arg0), var4, var3);n	return 1;n}nnpublic amx_tfc_by_d(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var89c == 0)n	{n		ejl_vault("WRITE", "TFC_Kamikazi_b", "off");n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage:  OFF   is now the default.");n	}n	elsen	{n		ejl_vault("WRITE", "TFC_Kamikazi_b", "on");n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage:  ON    is now the default.");n	}n	new var1 = 0;n	new var2 = 0;n	get_user_authid(_arg0, var1, 16);n	get_user_name(_arg0, var2, 32);n	log_amx(""%s<%d><%s><>" tfc_bystander_d", var2, get_user_userid(_arg0), var1);n	return 1;n}nnpublic amx_timebombs(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var898 == 1)n	{n		console_print(_arg0, "[AMXX] Kamikaze ON/OFF is locked. No change can be made unless you do amx_timebombs_lock");n		return 1;n	}n	if (2 > read_argc())n	{n		new var2 = 0;n		if (g_vare5c == 1)n		{n			copy(var2, g_var4, "ON");n		}n		elsen		{n			copy(var2, g_var4, "OFF");n		}n		console_print(_arg0, "[AMXX] Usage: amx_timebombs < on | off >     Currently: %s", var2);n		return 1;n	}n	new var3 = 0;n	read_argv(1, var3, 10);n	new var1;n	if (equal(var3, "on", 2) || equal(var3, 4420, 1))n	{n		g_vare5c = 1;n		console_print(_arg0, "[AMXX] Kamikaze mode is now ON");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode ON");n	}n	elsen	{n		g_vare5c = 0;n		console_print(_arg0, "[AMXX] Kamikaze mode is now OFF");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode OFF");n	}n	new var4 = 0;n	new var5 = 0;n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var5, 32);n	log_amx(""%s<%d><%s><>" timebombs_mode %s", var5, get_user_userid(_arg0), var4, var3);n	return 1;n}nnpublic amx_timebombs_d(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_vare5c == 0)n	{n		ejl_vault("WRITE", "Timebombs", "off");n		console_print(_arg0, "[AMXX] Kamikaze mode OFF   is now the default.");n	}n	elsen	{n		ejl_vault("WRITE", "Timebombs", "on");n		console_print(_arg0, "[AMXX] Kamikaze mode ON    is now the default.");n	}n	new var1 = 0;n	new var2 = 0;n	get_user_authid(_arg0, var1, 16);n	get_user_name(_arg0, var2, 32);n	log_amx(""%s<%d><%s><>" timebombs_mode_d", var2, get_user_userid(_arg0), var1);n	return 1;n}nnpublic blowem_up(_arg0)n{n	if (_arg0 == 100)n	{n		new var8;n		var8 = get_maxplayers() + 1;n		new var9 = 1;n		while (var9 < var8)n		{n			new var1;n			if (3280[var9] > 0 || 3412[var9] == 1)n			{n				3412[var9] = 0;n				3280[var9] = 0;n				new var10 = 0;n				get_user_name(var9, var10, 32);n				set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n				show_hudmessage(g_var0, "%s has exploded.", var10);n				new var11 = 0;n				get_user_origin(var9, var11, g_var0);n				var11 + 8/* ERROR unknown load Binary */ = var11 + 8/* ERROR unknown load Binary */ - 26;n				user_kill(var9, 1);n				sub_1840(var11, var9);n				3544[var9] = 1;n			}n			var9++;n		}n	}n	elsen	{n		if (0 < 3280[_arg0])n		{n			new var12 = 0;n			new var13 = 0;n			new var14 = 0;n			new var15 = 0;n			get_user_name(_arg0, var15, 31);n			set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n			show_hudmessage(g_var0, "%s has exploded.", var15);n			new var16 = 0;n			get_user_origin(_arg0, var16, g_var0);n			new var17;n			var17 = get_maxplayers() + 1;n			new var18 = 1;n			while (var18 < var17)n			{n				if (cvar_exists("mp_friendlyfire"))n				{n					new var19;n					var19 = get_cvar_num("mp_friendlyfire");n					new var3;n					if (var19 != 0 && (var19 == 1 && get_cvar_num("amx_kamikaze_obeyffcvar") == 0))n					{n						if (get_user_team(_arg0, {0}, g_var0) != get_user_team(var18, {0}, g_var0))n						{n							new var4;n							if (is_user_alive(var18) == 1 && _arg0 != var18)n							{n								get_user_origin(var18, var14, g_var0);n								if (g_var0 > get_distance(var16, var14))n								{n									sub_a2b8(var18, _arg0, 1, var14, 0);n								}n								if (g_var4 > get_distance(var16, var14))n								{n									sub_a2b8(var18, _arg0, 0, var14, 0);n								}n							}n						}n					}n					elsen					{n						new var5;n						if (is_user_alive(var18) == 1 && _arg0 != var18)n						{n							get_user_origin(var18, var14, g_var0);n							if (get_user_team(_arg0, {0}, g_var0) == get_user_team(var18, {0}, g_var0))n							{n								if (g_var0 > get_distance(var16, var14))n								{n									if (!g_vare64)n									{n										sub_a2b8(var18, _arg0, 1, var14, 1);n									}n								}n								elsen								{n									if (g_var4 > get_distance(var16, var14))n									{n										if (!g_vare64)n										{n											sub_a2b8(var18, _arg0, 0, var14, 1);n										}n									}n								}n							}n							if (g_var0 > get_distance(var16, var14))n							{n								sub_a2b8(var18, _arg0, 1, var14, 0);n							}n							if (g_var4 > get_distance(var16, var14))n							{n								sub_a2b8(var18, _arg0, 0, var14, 0);n							}n						}n					}n				}n				elsen				{n					new var6;n					if (is_user_alive(var18) == 1 && _arg0 != var18)n					{n						get_user_origin(var18, var14, g_var0);n						if (g_var0 > get_distance(var16, var14))n						{n							sub_a2b8(var18, _arg0, 1, var14, 0);n						}n						if (g_var4 > get_distance(var16, var14))n						{n							sub_a2b8(var18, _arg0, 0, var14, 0);n						}n					}n				}n				var18++;n			}n			3280[_arg0] = 0;n			3412[_arg0] = 0;n			client_print(_arg0, "", "[AMXX] :  Sorry, the bomb killed you.");n			user_kill(_arg0, 1);n			message_begin(1, g_varc2c, 19608, _arg0);n			write_short(2048);n			write_short(2048);n			write_short(4096);n			write_byte(250);n			write_byte(250);n			write_byte(250);n			write_byte(255);n			message_end();n			new var7;n			if (g_vare60 == 1 && 2340[_arg0] > 0)n			{n				client_print(_arg0, "", "[AMXX] :  Your kamikazi attempt was a success:  You made %d KILLS.", 2340[_arg0]);n			}n			var16 + 8/* ERROR unknown load Binary */ = var16 + 8/* ERROR unknown load Binary */ - 26;n			sub_1840(var16, _arg0);n			get_players(var12, var13, 19888, 19896);n			new var20 = 0;n			while (var20 < var13)n			{n				message_begin(1, g_varc30, 19900, var12[var20]);n				write_short(16384);n				write_short(16384);n				write_short(16384);n				message_end();n				var20++;n			}n			message_begin(g_var0, 23, 19912, _arg0);n			write_byte(107);n			write_coord(var16);n			write_coord(var16 + 4/* ERROR unknown load Binary */);n			write_coord(var16 + 8/* ERROR unknown load Binary */);n			write_coord("");n			write_short(g_varc3c);n			write_short(25);n			write_byte(100);n			message_end();n			3544[_arg0] = 1;n			set_user_rendering(_arg0, g_var0, g_var0, g_var0, g_var0, 5, g_var0);n		}n	}n	return 0;n}nnpublic check_votes()n{n	set_cvar_string("amx_vote_inprogress", 10572);n	ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n	g_var894 = 0;n	new var2 = 0;n	while (var2 < 33)n	{n		732[var2][1] = 0;n		var2++;n	}n	if (g_var88c == 1)n	{n		g_var88c = 0;n		client_print(g_var0, "", "[AMXX]  Voting sucessfully stopped.");n		return 1;n	}n	new var3 = 0;n	new var4 = 0;n	new var5 = 0;n	while (var5 < 4)n	{n		if (var4 < 2168[var5])n		{n			var4 = 2168[var5];n			var3 = var5;n		}n		var5++;n	}n	new var6;n	var6 = g_var890;n	new var7;n	new var1;n	if (var6)n	{n		var1 = floatdiv(float(2168[var3]), float(var6));n	}n	elsen	{n		var1 = 0;n	}n	var7 = var1;n	if (sub_2fc(var7, g_var888))n	{n		new var8;n		var8 = str_to_num(1640/* ERROR unknown load Constant */ + 1640);n		new var9 = 0;n		get_user_name(var8, var9, 32);n		if (var3 == 0)n		{n			if (is_user_alive(var8) == 0)n			{n				client_print(g_var0, "", "[AMXX] %s is dead and cannot be turned into a bomb.", var9);n				return 1;n			}n			2340[var8] = 0;n			3280[var8] = g_varc;n			sub_b0cc(var8);n			client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n			client_print(g_var0, "", "[AMXX] Voting successful. The result: %s has been turned into a timebomb by vote. (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n		}n		elsen		{n			client_print(g_var0, "", "[AMXX] Voting result: %s will not become a timebomb.  (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n			log_amx("World triggered "voting_success" (needed "%.2f") (ratio "%.2f") (result "bomb")", g_var888, var7);n		}n	}n	elsen	{n		client_print(g_var0, "", "[AMXX] Bomb voting failed... Not enough for a clear majority  (%d - %d of %d)", 2168, 2168 + 4, g_var890);n		log_amx("World triggered "voting_failure" (needed "%.2f") (ratio "%.2f")", g_var888, var7);n	}n	return 1;n}nnpublic client_connect(_arg0)n{n	3148[_arg0] = 0;n	3280[_arg0] = 0;n	3412[_arg0] = 0;n	3544[_arg0] = 0;n	732[_arg0][1] = 0;n	2472[_arg0] = 0;n	return 0;n}nnpublic client_disconnect(_arg0)n{n	3148[_arg0] = 0;n	3280[_arg0] = 0;n	3412[_arg0] = 0;n	3544[_arg0] = 0;n	732[_arg0][1] = 0;n	2472[_arg0] = 0;n	return 0;n}nnpublic ejl_vault(_arg0, _arg1, _arg2)n{n	new var2 = 0;n	new var3 = 0;n	new var4 = 0;n	new var5 = 0;n	new var6 = 0;n	new var7 = 0;n	new var8 = 0;n	new var9 = 0;n	new var10 = 0;n	sub_138c(var9, 64);n	format(var10, 64, "%s/ejl_vault.ini", var9);n	if (equal(_arg0, "READ", g_var0))n	{n		if (file_exists(var10) == 1)n		{n			copy(2604, 128, 27124);n			while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n			{n				parse(var2, var6, 64, var7, 128);n				if (equal(var6, _arg1, g_var0))n				{n					copy(2604, 128, var7);n				}n			}n		}n		elsen		{n			write_file(var10, "**** Plugins use to store values -- immune to crashes and map changes ****", g_var0);n		}n	}n	elsen	{n		if (equal(_arg0, "WRITE", g_var0))n		{n			if (file_exists(var10) == 1)n			{n				format(var8, 192, "%s %s", _arg1, _arg2);n				while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n				{n					parse(var2, var6, 64, var7, 128);n					if (var5 == 0)n					{n						new var1;n						if (equal(var2, 27476, g_var0) || equal(var6, _arg1, g_var0))n						{n							var5 = 1;n							write_file(var10, var8, var4 + -1);n						}n					}n					elsen					{n						if (equal(var6, _arg1, g_var0))n						{n							write_file(var10, 27480, var4 + -1);n						}n					}n				}n				if (var5 == 0)n				{n					write_file(var10, var8, -1);n				}n			}n		}n	}n	return 0;n}nnpublic handle_botsayplugin()n{n	new var1 = 0;n	read_argv(1, var1, 7);n	new var2;n	var2 = str_to_num(var1);n	new var3 = 0;n	read_args(var3, 191);n	new var4 = 0;n	read_argv(2, var4, 7);n	new var5;n	var5 = str_to_num(var4);n	if (is_user_bot(var5))n	{n		new var6 = 0;n		new var7;n		var7 = strlen(var3);n		new var8;n		var8 = contain(var3, ":    ");n		copy(var6, var7 - var8 + 5, var3[var8 + 5]);n		if (HandleSay2(var5, var6))n		{n			server_cmd("botsayreturn %d 1", var2);n		}n	}n	return 0;n}nnpublic lock_unlock(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var898 == 1)n	{n		g_var898 = 0;n		console_print(_arg0, "[AMXX] Kamikaze mode lock is OFF.");n	}n	elsen	{n		g_var898 = 1;n		console_print(_arg0, "[AMXX] Kamikazi mode lock is ON.");n		if (g_vare5c == 1)n		{n			console_print(_arg0, "[AMXX] You have locked kamikazi ON mode.");n		}n		console_print(_arg0, "[AMXX] You have locled Kamikazi OFF mode.");n	}n	return 1;n}nnpublic new_spawn(_arg0)n{n	set_user_rendering(_arg0, g_var0, 255, 255, 255, g_var0, 16);n	3544[_arg0] = 0;n	return 0;n}nnpublic plugin_init()n{n	register_plugin(16, "3.1.2", "eisbein based of GIR");n	register_cvar("amx_luds_kamikaze", "v3.1.2", g_var4, g_var0);n	register_concmd("amx_timebombs", "amx_timebombs", 16, "<on |off>   turns ability to kamikazi on and off");n	register_concmd("amx_timebombs_default", "amx_timebombs_d", 2048, "sets the current kamikazi mode as default");n	register_concmd("amx_timebomb_credit", "amx_tb_credit", 16, "<on |off>   turns kamikazi frag credit on and off");n	register_concmd("amx_timebomb_credit_default", "amx_tb_credit_d", 2048, "sets the current kamikazi frag credit mode as default");n	register_concmd("amx_timebomb", "admin_timebomb", 16, "< player >");n	register_concmd("amx_votetimebomb", "admin_votebomb", 33554432, "< part of nick >");n	register_concmd("amx_timebombs_lock", "lock_unlock", 2048, "Locks/unlocks the current timebombs mode");n	register_concmd("stopvote", "stopvote", 32, "stops vote in progress");n	register_clcmd("say", "HandleSay", -1, {0});n	register_concmd("say", "HandleSay", -1, {0});n	register_event("ResetHUD", "roundend_cleanup", 24984, "2&#Game_C", "2&#Game_w");n	register_srvcmd("botsay", "handle_botsayplugin", -1, {0});n	register_cvar("amx_kamikaze_obeyffcvar", 25280, g_var0, g_var0);n	register_cvar("amx_kamikaze_tkpunish1", 25380, g_var0, g_var0);n	register_cvar("amx_kamikaze_tkpunish2", 25480, g_var0, g_var0);n	set_cvar_string("amx_kamikaze_obeyffcvar", 25584);n	set_cvar_string("amx_kamikaze_tkpunish1", 25684);n	set_cvar_string("amx_kamikaze_tkpunish2", 25784);n	register_cvar("amx_vote_inprogress", 25872, g_var0, g_var0);n	register_cvar("amx_last_voting", 25944, g_var0, g_var0);n	set_cvar_float("amx_last_voting", g_var0);n	register_menucmd(register_menuid("Should we blow up ", g_var0), 15, "vote_count");n	register_cvar("amx_votetimebomb_ratio", "0.51", g_var0, g_var0);n	g_varc2c = get_user_msgid("ScreenFade");n	g_varc30 = get_user_msgid("ScreenShake");n	set_task(1065353216, "timebomb_timer", 765, 26400, g_var0, 26404, 9999);n	ejl_vault("READ", "Timebombs", 26472);n	if (equal(2604, "off", g_var0))n	{n		g_vare5c = 0;n	}n	elsen	{n		g_vare5c = 1;n	}n	ejl_vault("READ", "Kamikazi_FragCredit", 26592);n	if (equal(2604, "off", g_var0))n	{n		g_vare60 = 0;n	}n	elsen	{n		g_vare60 = 1;n	}n	ejl_vault("READ", "TFC_Kamikazi_b", 26692);n	if (equal(2604, "off", g_var0))n	{n		g_var89c = 0;n	}n	elsen	{n		g_var89c = 1;n	}n	ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n	set_task(1074580685, "set_kamik_rule", g_var0, {0}, g_var0, {0}, g_var0);n	register_event("ResetHUD", "new_spawn", 26944, {0});n	return 0;n}nnpublic plugin_log()n{n	new var1;n	var1 = read_logargc();n	if (var1 == 2)n	{n		new var2 = 0;n		read_logargv(1, var2, 31);n		if (var2 + 24/* ERROR unknown load Binary */ == 83)n		{n			round_start();n		}n	}n	elsen	{n		if (var1 == 3)n		{n			new var3 = 0;n			read_logargv(1, var3, 31);n			if (equal(var3, "changed role to", 15))n			{n				new var4 = 0;n				new var5 = 0;n				new var6 = 0;n				new var7 = 0;n				new var8 = 0;n				read_logargv(g_var0, var4, 63);n				read_logargv(2, var8, 31);n				new var9;n				var9 = strlen(var4);n				new var10;n				var10 = var9;n				new var11 = 0;n				while (var11 < var9)n				{n					var10 += -1;n					if (0 < var10)n					{n						if (var4[var10] == 60)n						{n							var7 += 1;n							if (var7 == 2)n							{n								copy(var5, var11 - var6, var4[var10 + 1]);n							}n							if (var7 == 1)n							{n								var6 = var11 + 2;n							}n						}n					}n					var11++;n				}n				new var12;n				var12 = find_player(21904, var5);n				if (!var12)n				{n					return 0;n				}n				if (equali(var8, "Spy", g_var0))n				{n					2472[var12] = 1;n				}n				elsen				{n					2472[var12] = 0;n				}n			}n		}n	}n	return 0;n}nnpublic plugin_precache()n{n	g_varc40 = precache_model("sprites/smoke.spr");n	g_varc44 = precache_model("sprites/white.spr");n	g_varc48 = precache_model("sprites/explode1.spr");n	g_varc34 = precache_model("sprites/glow01.spr");n	g_varc38 = precache_model("models/mapmodels/g_dynamite.mdl");n	g_varc3c = precache_model("models/hgibs.mdl");n	precache_sound("buttons/blip2.wav");n	return 0;n}nnpublic round_start()n{n	new var1;n	var1 = get_maxplayers() + 1;n	new var2 = 1;n	while (var2 < var1)n	{n		if (3544[var2] == 1)n		{n			set_user_rendering(var2, g_var0, 255, 255, 255, g_var0, 16);n			3544[var2] = 0;n		}n		var2++;n	}n	return 0;n}nnpublic roundend_cleanup()n{n	blowem_up(100);n	g_vare64 = 1;n	set_task(1097859072, "roundstart_delay", g_var0, {0}, g_var0, {0}, g_var0);n	return 0;n}nnpublic roundstart_delay()n{n	g_vare64 = 0;n	return 0;n}nnpublic set_kamik_rule()n{n	new var1 = 0;n	new var2 = 0;n	new var3 = 0;n	sub_138c(var2, 32);n	get_mapname(var1, 33);n	format(var3, 64, "%s/kamikazi.txt", var2);n	if (file_exists(var3) == 1)n	{n		new var4 = 0;n		new var5 = 0;n		new var6 = 0;n		new var7 = 0;n		new var8 = 0;n		while ((var4 = read_file(var3, var4, var5, 128, _unused_temp_)) != 0)n		{n			parse(var5, var6, 32, var7, 2, var8, 2);n			if (equali(var6, var1, g_var0))n			{n				if (equal(var7, 27020, 1))n				{n					g_vare5c = 1;n				}n				elsen				{n					g_vare5c = 0;n				}n				if (equal(var8, 27028, 1))n				{n					g_var898 = 1;n				}n			}n		}n	}n	return 1;n}nnpublic stopvote(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var894 == 1)n	{n		new var1 = 0;n		get_user_name(_arg0, var1, 32);n		g_var88c = 1;n		client_print(_arg0, 2, "[AMXX]  ADMIN !!! Ignore the unknown command message -- its ok");n		client_print(g_var0, "", "[AMXX]  %s has disabled the vote in progress.", var1);n	}n	return 0;n}nnpublic timebomb_timer()n{n	new var3;n	var3 = get_gametime();n	new var4 = 100;n	new var5;n	var5 = get_maxplayers() + 1;n	new var6 = 0;n	var6 = 1;n	while (var6 < var5)n	{n		new var1;n		if (3280[var6] != 0 && 3280[var6] < var4)n		{n			var4 = var6;n		}n		new var2;n		if (3412[var6] == 1 && sub_3bc(sub_174(sub_174(sub_174(3148[var6], g_var8), g_varc), 5), var3))n		{n			3412[var6] = 0;n			3280[var6] = 0;n		}n		var6++;n	}n	var6 = 1;n	while (var6 < var5)n	{n		if (0 < 3280[var6])n		{n			emit_sound(var6, "", "buttons/blip2.wav", 1065353216, 1061997773, g_var0, 100);n			new var7 = 0;n			get_user_origin(var6, var7, g_var0);n			message_begin(g_var0, 23, 18808, var6);n			write_byte(17);n			write_coord(var7);n			write_coord(var7 + 4/* ERROR unknown load Binary */);n			write_coord(var7 + 8/* ERROR unknown load Binary */ + 20);n			write_short(g_varc34);n			write_byte(20);n			write_byte(200);n			message_end();n			if (3280[var6] == 1)n			{n				blowem_up(var6);n			}n			elsen			{n				3280[var6] -= 1;n				if (var4 == var6)n				{n					new var8 = 0;n					new var9 = 0;n					get_user_name(var6, var8, 32);n					get_user_team(var6, var9, 32);n					if (equal(var9, 18820, 1))n					{n						set_hudmessage(200, g_var0, g_var0, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n					}n					elsen					{n						set_hudmessage(g_var0, 100, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n					}n					show_hudmessage(g_var0, "%s will explode in %d seconds.", var8, 3280[var6]);n					if (3280[var6] == 11)n					{n						client_cmd(g_var0, "spk "fvox/remaining"");n					}n					if (11 > 3280[var6])n					{n						new var10 = 0;n						num_to_word(3280[var6], var10, 48);n						client_cmd(g_var0, "spk "fvox/%s"", var10);n					}n				}n				if (is_user_alive(var6) == 0)n				{n					blowem_up(var6);n				}n			}n		}n		var6++;n	}n	return 0;n}nnpublic vote_count(_arg0, _arg1)n{n	ejl_vault("READ", "CURRENT_VOTE", 12900);n	if (equal(2604, "TIMEBOMB", g_var0))n	{n		new var1 = 0;n		get_user_name(_arg0, var1, 32);n		if (732[_arg0] != g_var2d8)n		{n			732[_arg0] = g_var2d8;n			if (!(sub_47c(get_cvar_float("amx_vote_answers"))))n			{n				client_print(g_var0, "", "[AMXX] %s voted for option # %d", var1, _arg1 + 1);n			}n			2168[_arg1] += 1;n		}n		elsen		{n			732[_arg0][1] += 1;n		}n		return 1;n	}n	return 0;n}nnsub_2fc(_arg0, _arg1)n{n	return 0 < floatcmp(_arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n	return floatadd(_arg0, float(_arg1));n}nnsub_b0cc(_arg0)n{n	new var2;n	var2 = g_varc * 10 + 20;n	new var1;n	if (var2 > 255 || var2 < 1)n	{n		var2 = 255;n	}n	message_begin(g_var0, 23, 21828, _arg0);n	write_byte(124);n	write_byte(_arg0);n	write_coord(7);n	write_short(g_varc38);n	write_short(var2);n	message_end();n	return 0;n}nnsub_72c(_arg0, _arg1, _arg2, _arg3)n{n	new var2 = 0;n	new var1;n	if (is_dedicated_server())n	{n		var1 = 0;n	}n	elsen	{n		var1 = 1;n	}n	if (var1 == _arg0)n	{n		var2 = 1;n	}n	elsen	{n		if (_arg1 == 16777216)n		{n			if (sub_64c(_arg0))n			{n				var2 = 1;n			}n		}n		if (_arg1 & get_user_flags(_arg0, g_var0))n		{n			var2 = 1;n		}n		if (_arg1 == 0)n		{n			var2 = 1;n		}n	}n	if (var2 == 0)n	{n		console_print(_arg0, "%L", _arg0, "NO_ACC_COM");n		return 0;n	}n	if (_arg3 > read_argc())n	{n		new var3 = 0;n		new var4 = 0;n		get_concmd(_arg2, var3, 31, _unused_temp_, var4, 127, _arg1, -1);n		console_print(_arg0, "%L:  %s %s", _arg0, "USAGE", var3, var4);n		return 0;n	}n	return 1;n}nnsub_bd0(_arg0, _arg1, _arg2)n{n	new var4;n	var4 = find_player("bl", _arg1);n	if (var4)n	{n		if (find_player("blj", _arg1) != var4)n		{n			console_print(_arg0, "%L", _arg0, "MORE_CL_MATCHT");n			return 0;n		}n	}n	elsen	{n		new var1;n		if ((var4 = find_player(388, _arg1)) == 0 && _arg1 == 35 && _arg1 + 4/* ERROR unknown load Binary */)n		{n			var4 = find_player(396, str_to_num(_arg1 + 4));n		}n	}n	if (!var4)n	{n		console_print(_arg0, "%L", _arg0, "CL_NOT_FOUND");n		return 0;n	}n	if (_arg2 & 1)n	{n		new var3;n		if (get_user_flags(var4, g_var0) & 1 && _arg2 & 2)n		{n			new var5 = 0;n			get_user_name(var4, var5, 31);n			console_print(_arg0, "%L", _arg0, "CLIENT_IMM", var5);n			return 0;n		}n	}n	if (_arg2 & 4)n	{n		if (!is_user_alive(var4))n		{n			new var6 = 0;n			get_user_name(var4, var6, 31);n			console_print(_arg0, "%L", _arg0, "CANT_PERF_DEAD", var6);n			return 0;n		}n	}n	if (_arg2 & 8)n	{n		if (is_user_bot(var4))n		{n			new var7 = 0;n			get_user_name(var4, var7, 31);n			console_print(_arg0, "%L", _arg0, "CANT_PERF_BOT", var7);n			return 0;n		}n	}n	return var4;n}nnsub_1840(_arg0, _arg1)n{n	message_begin(g_var0, 23, _arg0, g_var0);n	write_byte(21);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 16);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 1936);n	write_short(g_varc44);n	write_byte(g_var0);n	write_byte(g_var0);n	write_byte("");n	write_byte(20);n	write_byte(g_var0);n	write_byte(188);n	write_byte("%L:  %s %s");n	write_byte(255);n	write_byte(255);n	write_byte(g_var0);n	message_end();n	message_begin(g_var0, 23, {0,0,0}, g_var0);n	write_byte(g_varc);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */);n	write_byte(188);n	write_byte(10);n	message_end();n	message_begin(g_var0, 23, _arg0, g_var0);n	write_byte("");n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */);n	write_short(g_varc48);n	write_byte(65);n	write_byte(10);n	write_byte(g_var0);n	message_end();n	message_begin(g_var0, 23, 3700, _arg1);n	write_byte(125);n	write_byte(_arg1);n	message_end();n	message_begin(g_var0, 23, _arg0, g_var0);n	write_byte(5);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */);n	write_short(g_varc40);n	write_byte(20);n	write_byte(10);n	message_end();n	return 0;n}nnsub_a2b8(_arg0, _arg1, _arg2, _arg3, _arg4)n{n	new var3;n	var3 = get_user_health(_arg0);n	new var4 = 0;n	new var5 = 0;n	new var6 = 0;n	new var7 = 0;n	new var8 = 0;n	new var9 = 0;n	get_user_team(_arg0, var5, 31);n	get_user_name(_arg0, var9, 31);n	get_user_authid(_arg0, var7, 31);n	get_user_team(_arg1, var4, 31);n	get_user_name(_arg1, var8, 31);n	get_user_authid(_arg1, var6, 31);n	new var1;n	if (_arg2 == 1 || var3 < 50)n	{n		client_print(_arg0, "", "[AMXX] :  Sorry, the bomb killed you.");n		new var2;n		if (g_vare60 == 1 && 3412[_arg1] == 1)n		{n			new var10;n			var10 = get_user_frags(_arg1);n			if (_arg4 == 0)n			{n				2340[_arg1] += 1;n				set_user_frags(_arg1, var10 + 1);n			}n			elsen			{n				2208[_arg1] += 1;n				set_user_frags(_arg1, var10 + -1);n				new var11;n				var11 = get_cvar_num("amx_kamikaze_tkpunish1");n				new var12;n				var12 = get_cvar_num("amx_kamikaze_tkpunish2");n				if (var12 + -1 < 2208[_arg1])n				{n					if (var11 == 1)n					{n						client_cmd(_arg1, "echo You were kicked for team killing;disconnect");n					}n					if (var11 == 2)n					{n						client_cmd(_arg1, "echo You were banned for team killing");n						if (equal("4294967295", var6, g_var0))n						{n							new var13 = 0;n							get_user_ip(_arg1, var13, 31, 1);n							server_cmd("addip 180.0 %s;writeip", var13);n						}n						server_cmd("banid 180.0 %s kick;writeid", var6);n					}n				}n			}n			log_message(""%s<%d><%s><%s>" killed "%s<%d><%s><%s>" with "Kamikaze Bomb"", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5);n		}n		user_kill(_arg0, 1);n		sub_1840(_arg3, _arg0);n	}n	elsen	{n		client_print(_arg0, "", "[AMXX] :  Ouch, that bomb hurt you.");n		set_user_health(_arg0, var3 + -50);n		if (get_cvar_num("mp_logdetail") == 3)n		{n			log_message(""%s<%d><%s><%s>" attacked "%s<%d><%s><%s>" with "Kamikaze Bomb" (hit "chest") (damage "50") (health "%d")", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5, get_user_health(_arg0));n		}n		if (_arg4 == 1)n		{n			new var14 = 0;n			new var15 = 0;n			get_players(var14, var15, 21724, var4);n			new var16 = 0;n			while (var16 < var15)n			{n				client_print(var14[var16], "", "%s  attacked a teammate", var8);n				var16++;n			}n		}n	}n	return 0;n}nnsub_2fc(_arg0, _arg1)n{n	return 0 <= floatcmp(_arg0, _arg1);n}nnsub_138c(_arg0, _arg1)n{n	return get_localinfo("amxx_configsdir", _arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n	return floatsub(_arg0, float(_arg1));n}nnsub_3bc(_arg0, _arg1)n{n	return 0 > floatcmp(_arg0, _arg1);n}nnsub_47c(_arg0, _arg1)n{n	return _arg0 & -1 == 0;n}nnsub_64c(_arg0)n{n	new var1;n	return get_user_flags(_arg0, g_var0) > 0 && !get_user_flags(_arg0, g_var0) & 33554432;n}nn

Decompiled source reconstructed

timebomb_272.amxx was published compiled only. This Pawn was recovered from the bytecode with Lysis — 1504 lines. Strings, cvars and the plugin registration survive; local variable names do not. It is an approximation, not the author's file.

// Decompiled from timebomb_272.amxx by Lysis.n// This is RECONSTRUCTED source, not the author's original: withoutn// debug symbols the variable names are lost and control flow isn// rebuilt from bytecode. Treat it as a readable approximation.nnnew g_vare5c = 1;nnew g_vare64;nnew g_varc = 15;nnew g_var8 = 40;nnew g_var888;nnew g_var2d8;nnew g_var894;nnew g_var890;nnew g_var88c;nnew g_vare60 = 1;nnew g_var89c;nnew g_var898;nnew g_var0 = 450;nnew g_var4 = 700;nnew g_varc2c;nnew g_varc30;nnew g_varc3c;nnew g_varc40;nnew g_varc44;nnew g_varc48;nnew g_varc34;nnew g_varc38;npublic HandleSay(_arg0)n{n	new var1 = 0;n	read_args(var1, 192);n	remove_quotes(var1);n	if (HandleSay2(_arg0, var1))n	{n		return 1;n	}n	return 0;n}nnpublic HandleSay2(_arg0, _arg1)n{n	new var2;n	var2 = get_gametime();n	new var3;n	var3 = get_user_team(_arg0, {0}, g_var0);n	new var1;n	if (equal(_arg1, "kamik", 5) || equal(_arg1, "kamak", 5))n	{n		if (g_vare5c == 0)n		{n			client_print(_arg0, "", "[AMXX] :  Admin has disabled the ability to kamikaze.");n			return 1;n		}n		if (is_user_alive(_arg0) == 0)n		{n			client_print(_arg0, "", "[AMXX] :  You cannot become a bomb, you are already dead.");n			return 1;n		}n		if (g_vare64 == 1)n		{n			client_print(_arg0, "", "[AMXX] :  Its too early in the round to become a bomb.");n			return 1;n		}n		if (0 < 3280[_arg0])n		{n			client_print(_arg0, "", "[AMXX] :  You are the bomb already.");n			return 1;n		}n		if (2472[_arg0] == 1)n		{n			client_print(_arg0, "", "[AMXX] :  You are a spy, spys cannot become kamikazes.");n			return 1;n		}n		new var4;n		var4 = get_maxplayers() + 1;n		new var5 = 1;n		while (var5 < var4)n		{n			if (get_cvar_num("amx_kamikaze_bombers") > 3688[var3])n			{n				client_print(_arg0, "", "[AMXX] :  Wait your turn, too many kamikazis on your team.");n				return 1;n			}n			var5++;n		}n		if (sub_2fc(3148[_arg0], var2))n		{n			client_print(_arg0, "", "[AMXX] :  You were just a bomb a short while ago, give someone else a chance.");n			return 1;n		}n		2340[_arg0] = 0;n		3688[var3]++;n		3412[_arg0] = 1;n		3280[_arg0] = g_varc;n		3148[_arg0] = sub_174(var2, g_var8);n		new var6 = 0;n		get_user_name(_arg0, var6, 32);n		sub_b258(_arg0);n		client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n		client_print(g_var0, "", "[AMXX] :  %s has become a human timebomb, run for cover!!!", var6);n		return 0;n	}n	return 0;n}nnpublic admin_timebomb(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 2))n	{n		return 1;n	}n	new var1 = 0;n	read_argv(1, var1, 32);n	new var2;n	var2 = sub_bd0(_arg0, var1, 1);n	if (!var2)n	{n		return 1;n	}n	if (is_user_alive(var2) == 0)n	{n		console_print(_arg0, "[AMXX] The player is dead and cannot be bombed");n		return 1;n	}n	if (0 < 3280[var2])n	{n		console_print(_arg0, "[AMXX] :  That player is already a bomb");n		return 1;n	}n	2340[var2] = 0;n	3280[var2] = g_varc;n	new var3 = 0;n	get_user_name(var2, var3, 32);n	client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n	client_print(g_var0, "", "[AMXX] :  %s has become a human timebomb, run for cover!!!", var3);n	new var4 = 0;n	new var5 = 0;n	new var6 = 0;n	get_user_authid(var2, var5, 16);n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var6, 32);n	sub_b258(var2);n	log_amx(""%s<%d><%s><>" timebomb "%s<%d><%s><>"", var6, get_user_userid(_arg0), var4, var3, get_user_userid(var2), var5);n	console_print(_arg0, "[AMXX] Client "%s" bombed", var3);n	client_print(g_var0, "", "[AMXX] Admin:    %s  has bombed  %s", var6, var3);n	return 1;n}nnpublic admin_votebomb(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 2))n	{n		return 1;n	}n	new var3;n	var3 = get_cvar_float("amx_last_voting");n	if (sub_2fc(var3, get_gametime()))n	{n		console_print(_arg0, "There is already one voting...");n		return 1;n	}n	new var1;n	if (var3 && sub_2fc(floatadd(var3, get_cvar_float("amx_vote_delay")), get_gametime()))n	{n		console_print(_arg0, "Voting not allowed at this time");n		return 1;n	}n	new var4 = 0;n	get_cvar_string("amx_vote_inprogress", var4, 32);n	if (equal(var4, 13608, 1))n	{n		new var5 = 0;n		read_argv(1, var5, 32);n		new var6;n		var6 = sub_bd0(_arg0, var5, 1);n		if (!var6)n		{n			return 1;n		}n		new var7 = 0;n		new var8 = 0;n		get_user_name(var6, var5, 32);n		if (is_user_alive(var6) == 0)n		{n			client_print(_arg0, 2, "[AMXX] %s is dead and cannot be voted a bomb.", var5);n			return 1;n		}n		format(var7, 256, "yShould we blow up %s?wnn1.  Yesn2.  No", var5);n		num_to_str(var6, 1640/* ERROR unknown load Constant */ + 1640, 32);n		var8 = 3;n		new var9 = 0;n		new var10 = 0;n		get_user_authid(_arg0, var9, 16);n		get_user_name(_arg0, var10, 32);n		log_amx(""%s<%d><%s><>" vote bomb (target "%s")", var10, get_user_userid(_arg0), var9, var5);n		new var11;n		var11 = floatadd(1073741824, get_cvar_float("amx_vote_time"));n		set_cvar_float("amx_last_voting", floatadd(get_gametime(), var11));n		g_var888 = get_cvar_float("amx_votetimebomb_ratio");n		copy(1128, 128, "bomb %s");n		new var12 = 0;n		while (var12 < 33)n		{n			732[var12][1] = 0;n			var12++;n		}n		g_var2d8 += 1;n		set_cvar_string("amx_vote_inprogress", 14448);n		ejl_vault("WRITE", "CURRENT_VOTE", "TIMEBOMB");n		g_var894 = 1;n		g_var890 = 0;n		new var13 = 0;n		new var14;n		var14 = get_maxplayers() + 1;n		new var15 = 1;n		while (var15 < var14)n		{n			get_user_team(var15, var13, 33);n			new var2;n			if (equali(var13, "UNAS", g_var4) || equali(var13, "SPEC", g_var4) || get_user_time(var15, g_var0) != 0)n			{n				show_menu(var15, var8, var7, floatround(var11, g_var0), {0});n				g_var890 += 1;n			}n			var15++;n		}n		set_task(var11, "check_votes", g_var0, {0}, g_var0, {0}, g_var0);n		g_var88c = 0;n		client_print(_arg0, 2, "[AMXX] Voting has started...");n		new var16 = 0;n		while (var16 < 4)n		{n			2168[var16] = 0;n			var16++;n		}n	}n	elsen	{n		client_print(_arg0, 2, "[AMXX] Voting not allowed yet.");n	}n	return 1;n}nnpublic amx_tb_credit(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (2 > read_argc())n	{n		new var2 = 0;n		if (g_vare60 == 1)n		{n			copy(var2, g_var4, "ON");n		}n		elsen		{n			copy(var2, g_var4, "OFF");n		}n		console_print(_arg0, "[AMXX] Usage: amx_timebomb_credit < on | off >     Currently: %s", var2);n		return 1;n	}n	new var3 = 0;n	read_argv(1, var3, 10);n	new var1;n	if (equal(var3, "on", 2) || equal(var3, 6120, 1))n	{n		g_vare60 = 1;n		console_print(_arg0, "[AMXX] Kamikaze frag credit is now ON");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode ON");n	}n	elsen	{n		g_vare60 = 0;n		console_print(_arg0, "[AMXX] Kamikaze frag credit is now OFF");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze frag credit mode OFF");n	}n	new var4 = 0;n	new var5 = 0;n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var5, 32);n	log_amx(""%s<%d><%s><>" kamikazi_frag_cr %s", var5, get_user_userid(_arg0), var4, var3);n	return 1;n}nnpublic amx_tb_credit_d(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_vare60 == 0)n	{n		ejl_vault("WRITE", "Kamikazi_FragCredit", "off");n		console_print(_arg0, "[AMXX] Kamikaze frag credit:  OFF   is now the default.");n	}n	elsen	{n		ejl_vault("WRITE", "Kamikazi_FragCredit", "on");n		console_print(_arg0, "[AMXX] Kamikaze frag credit:  ON    is now the default.");n	}n	new var1 = 0;n	new var2 = 0;n	get_user_authid(_arg0, var1, 16);n	get_user_name(_arg0, var2, 32);n	log_amx(""%s<%d><%s><>" kamikazi_frag_cr_d", var2, get_user_userid(_arg0), var1);n	return 1;n}nnpublic amx_tfc_by(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (2 > read_argc())n	{n		new var2 = 0;n		if (g_var89c == 1)n		{n			copy(var2, g_var4, "ON");n		}n		elsen		{n			copy(var2, g_var4, "OFF");n		}n		console_print(_arg0, "[AMXX] Usage: amx_timebomb_tfc_b < on | off >     Currently: %s", var2);n		return 1;n	}n	new var3 = 0;n	read_argv(1, var3, 10);n	new var1;n	if (equal(var3, "on", 2) || equal(var3, 8120, 1))n	{n		g_var89c = 1;n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage ON");n		client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage ON");n	}n	elsen	{n		g_var89c = 0;n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage is now OFF");n		client_print(g_var0, "", "[AMXX] Admin has turned TFC timebomb bystander damage OFF");n	}n	new var4 = 0;n	new var5 = 0;n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var5, 32);n	log_amx(""%s<%d><%s><>" tfc_bystander %s", var5, get_user_userid(_arg0), var4, var3);n	return 1;n}nnpublic amx_tfc_by_d(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var89c == 0)n	{n		ejl_vault("WRITE", "TFC_Kamikazi_b", "off");n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage:  OFF   is now the default.");n	}n	elsen	{n		ejl_vault("WRITE", "TFC_Kamikazi_b", "on");n		console_print(_arg0, "[AMXX] TFC timebomb bystander damage:  ON    is now the default.");n	}n	new var1 = 0;n	new var2 = 0;n	get_user_authid(_arg0, var1, 16);n	get_user_name(_arg0, var2, 32);n	log_amx(""%s<%d><%s><>" tfc_bystander_d", var2, get_user_userid(_arg0), var1);n	return 1;n}nnpublic amx_timebombs(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var898 == 1)n	{n		console_print(_arg0, "[AMXX] Kamikaze ON/OFF is locked. No change can be made unless you do amx_timebombs_lock");n		return 1;n	}n	if (2 > read_argc())n	{n		new var2 = 0;n		if (g_vare5c == 1)n		{n			copy(var2, g_var4, "ON");n		}n		elsen		{n			copy(var2, g_var4, "OFF");n		}n		console_print(_arg0, "[AMXX] Usage: amx_timebombs < on | off >     Currently: %s", var2);n		return 1;n	}n	new var3 = 0;n	read_argv(1, var3, 10);n	new var1;n	if (equal(var3, "on", 2) || equal(var3, 4436, 1))n	{n		g_vare5c = 1;n		console_print(_arg0, "[AMXX] Kamikaze mode is now ON");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode ON");n	}n	elsen	{n		g_vare5c = 0;n		console_print(_arg0, "[AMXX] Kamikaze mode is now OFF");n		client_print(g_var0, "", "[AMXX] Admin has turned Kamikaze mode OFF");n	}n	new var4 = 0;n	new var5 = 0;n	get_user_authid(_arg0, var4, 16);n	get_user_name(_arg0, var5, 32);n	log_amx(""%s<%d><%s><>" timebombs_mode %s", var5, get_user_userid(_arg0), var4, var3);n	return 1;n}nnpublic amx_timebombs_d(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_vare5c == 0)n	{n		ejl_vault("WRITE", "Timebombs", "off");n		console_print(_arg0, "[AMXX] Kamikaze mode OFF   is now the default.");n	}n	elsen	{n		ejl_vault("WRITE", "Timebombs", "on");n		console_print(_arg0, "[AMXX] Kamikaze mode ON    is now the default.");n	}n	new var1 = 0;n	new var2 = 0;n	get_user_authid(_arg0, var1, 16);n	get_user_name(_arg0, var2, 32);n	log_amx(""%s<%d><%s><>" timebombs_mode_d", var2, get_user_userid(_arg0), var1);n	return 1;n}nnpublic blowem_up(_arg0)n{n	if (_arg0 == 100)n	{n		new var8;n		var8 = get_maxplayers() + 1;n		new var9 = 1;n		while (var9 < var8)n		{n			new var1;n			if (3280[var9] > 0 || 3412[var9] == 1)n			{n				3412[var9] = 0;n				3280[var9] = 0;n				3688[get_user_team(var9, {0}, g_var0)]--;n				new var10 = 0;n				get_user_name(var9, var10, 32);n				set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n				show_hudmessage(g_var0, "%s has exploded.", var10);n				new var11 = 0;n				get_user_origin(var9, var11, g_var0);n				var11 + 8/* ERROR unknown load Binary */ = var11 + 8/* ERROR unknown load Binary */ - 26;n				user_kill(var9, 1);n				sub_1868(var11, var9);n				3544[var9] = 1;n			}n			var9++;n		}n	}n	elsen	{n		if (0 < 3280[_arg0])n		{n			new var12 = 0;n			new var13 = 0;n			new var14 = 0;n			new var15 = 0;n			get_user_name(_arg0, var15, 31);n			set_hudmessage(200, 255, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n			show_hudmessage(g_var0, "%s has exploded.", var15);n			new var16 = 0;n			get_user_origin(_arg0, var16, g_var0);n			new var17;n			var17 = get_maxplayers() + 1;n			new var18 = 1;n			while (var18 < var17)n			{n				if (cvar_exists("mp_friendlyfire"))n				{n					new var19;n					var19 = get_cvar_num("mp_friendlyfire");n					new var3;n					if (var19 != 0 && (var19 == 1 && get_cvar_num("amx_kamikaze_obeyffcvar") == 0))n					{n						if (get_user_team(_arg0, {0}, g_var0) != get_user_team(var18, {0}, g_var0))n						{n							new var4;n							if (is_user_alive(var18) == 1 && _arg0 != var18)n							{n								get_user_origin(var18, var14, g_var0);n								if (g_var0 > get_distance(var16, var14))n								{n									sub_a444(var18, _arg0, 1, var14, 0);n								}n								if (g_var4 > get_distance(var16, var14))n								{n									sub_a444(var18, _arg0, 0, var14, 0);n								}n							}n						}n					}n					elsen					{n						new var5;n						if (is_user_alive(var18) == 1 && _arg0 != var18)n						{n							get_user_origin(var18, var14, g_var0);n							if (get_user_team(_arg0, {0}, g_var0) == get_user_team(var18, {0}, g_var0))n							{n								if (g_var0 > get_distance(var16, var14))n								{n									if (!g_vare64)n									{n										sub_a444(var18, _arg0, 1, var14, 1);n									}n								}n								elsen								{n									if (g_var4 > get_distance(var16, var14))n									{n										if (!g_vare64)n										{n											sub_a444(var18, _arg0, 0, var14, 1);n										}n									}n								}n							}n							if (g_var0 > get_distance(var16, var14))n							{n								sub_a444(var18, _arg0, 1, var14, 0);n							}n							if (g_var4 > get_distance(var16, var14))n							{n								sub_a444(var18, _arg0, 0, var14, 0);n							}n						}n					}n				}n				elsen				{n					new var6;n					if (is_user_alive(var18) == 1 && _arg0 != var18)n					{n						get_user_origin(var18, var14, g_var0);n						if (g_var0 > get_distance(var16, var14))n						{n							sub_a444(var18, _arg0, 1, var14, 0);n						}n						if (g_var4 > get_distance(var16, var14))n						{n							sub_a444(var18, _arg0, 0, var14, 0);n						}n					}n				}n				var18++;n			}n			3280[_arg0] = 0;n			3412[_arg0] = 0;n			client_print(_arg0, "", "[AMXX] :  Sorry, the bomb killed you.");n			user_kill(_arg0, 1);n			message_begin(1, g_varc2c, 19720, _arg0);n			write_short(2048);n			write_short(2048);n			write_short(4096);n			write_byte(250);n			write_byte(250);n			write_byte(250);n			write_byte(255);n			message_end();n			new var7;n			if (g_vare60 == 1 && 2340[_arg0] > 0)n			{n				client_print(_arg0, "", "[AMXX] :  Your kamikazi attempt was a success:  You made %d KILLS.", 2340[_arg0]);n			}n			var16 + 8/* ERROR unknown load Binary */ = var16 + 8/* ERROR unknown load Binary */ - 26;n			sub_1868(var16, _arg0);n			get_players(var12, var13, 20000, 20008);n			new var20 = 0;n			while (var20 < var13)n			{n				message_begin(1, g_varc30, 20012, var12[var20]);n				write_short(16384);n				write_short(16384);n				write_short(16384);n				message_end();n				var20++;n			}n			message_begin(g_var0, 23, 20024, _arg0);n			write_byte(107);n			write_coord(var16);n			write_coord(var16 + 4/* ERROR unknown load Binary */);n			write_coord(var16 + 8/* ERROR unknown load Binary */);n			write_coord("");n			write_short(g_varc3c);n			write_short(25);n			write_byte(100);n			message_end();n			3544[_arg0] = 1;n			set_user_rendering(_arg0, g_var0, g_var0, g_var0, g_var0, 5, g_var0);n		}n	}n	return 0;n}nnpublic check_votes()n{n	set_cvar_string("amx_vote_inprogress", 10588);n	ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n	g_var894 = 0;n	new var2 = 0;n	while (var2 < 33)n	{n		732[var2][1] = 0;n		var2++;n	}n	if (g_var88c == 1)n	{n		g_var88c = 0;n		client_print(g_var0, "", "[AMXX]  Voting sucessfully stopped.");n		return 1;n	}n	new var3 = 0;n	new var4 = 0;n	new var5 = 0;n	while (var5 < 4)n	{n		if (var4 < 2168[var5])n		{n			var4 = 2168[var5];n			var3 = var5;n		}n		var5++;n	}n	new var6;n	var6 = g_var890;n	new var7;n	new var1;n	if (var6)n	{n		var1 = floatdiv(float(2168[var3]), float(var6));n	}n	elsen	{n		var1 = 0;n	}n	var7 = var1;n	if (sub_2fc(var7, g_var888))n	{n		new var8;n		var8 = str_to_num(1640/* ERROR unknown load Constant */ + 1640);n		new var9 = 0;n		get_user_name(var8, var9, 32);n		if (var3 == 0)n		{n			if (is_user_alive(var8) == 0)n			{n				client_print(g_var0, "", "[AMXX] %s is dead and cannot be turned into a bomb.", var9);n				return 1;n			}n			2340[var8] = 0;n			3280[var8] = g_varc;n			sub_b258(var8);n			client_cmd(g_var0, "spk "vox/warning _comma _comma detonation device activated"");n			client_print(g_var0, "", "[AMXX] Voting successful. The result: %s has been turned into a timebomb by vote. (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n		}n		elsen		{n			client_print(g_var0, "", "[AMXX] Voting result: %s will not become a timebomb.  (%d - %d of %d)", var9, 2168, 2168 + 4, g_var890);n			log_amx("World triggered "voting_success" (needed "%.2f") (ratio "%.2f") (result "bomb")", g_var888, var7);n		}n	}n	elsen	{n		client_print(g_var0, "", "[AMXX] Bomb voting failed... Not enough for a clear majority  (%d - %d of %d)", 2168, 2168 + 4, g_var890);n		log_amx("World triggered "voting_failure" (needed "%.2f") (ratio "%.2f")", g_var888, var7);n	}n	return 1;n}nnpublic client_connect(_arg0)n{n	3148[_arg0] = 0;n	3280[_arg0] = 0;n	3412[_arg0] = 0;n	3544[_arg0] = 0;n	732[_arg0][1] = 0;n	2472[_arg0] = 0;n	return 0;n}nnpublic client_disconnect(_arg0)n{n	3148[_arg0] = 0;n	3280[_arg0] = 0;n	3412[_arg0] = 0;n	3544[_arg0] = 0;n	732[_arg0][1] = 0;n	2472[_arg0] = 0;n	return 0;n}nnpublic ejl_vault(_arg0, _arg1, _arg2)n{n	new var2 = 0;n	new var3 = 0;n	new var4 = 0;n	new var5 = 0;n	new var6 = 0;n	new var7 = 0;n	new var8 = 0;n	new var9 = 0;n	new var10 = 0;n	sub_138c(var9, 64);n	format(var10, 64, "%s/ejl_vault.ini", var9);n	if (equal(_arg0, "READ", g_var0))n	{n		if (file_exists(var10) == 1)n		{n			copy(2604, 128, 27328);n			while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n			{n				parse(var2, var6, 64, var7, 128);n				if (equal(var6, _arg1, g_var0))n				{n					copy(2604, 128, var7);n				}n			}n		}n		elsen		{n			write_file(var10, "**** Plugins use to store values -- immune to crashes and map changes ****", g_var0);n		}n	}n	elsen	{n		if (equal(_arg0, "WRITE", g_var0))n		{n			if (file_exists(var10) == 1)n			{n				format(var8, 192, "%s %s", _arg1, _arg2);n				while ((var4 = read_file(var10, var4, var2, 192, var3)) != 0)n				{n					parse(var2, var6, 64, var7, 128);n					if (var5 == 0)n					{n						new var1;n						if (equal(var2, 27680, g_var0) || equal(var6, _arg1, g_var0))n						{n							var5 = 1;n							write_file(var10, var8, var4 + -1);n						}n					}n					elsen					{n						if (equal(var6, _arg1, g_var0))n						{n							write_file(var10, 27684, var4 + -1);n						}n					}n				}n				if (var5 == 0)n				{n					write_file(var10, var8, -1);n				}n			}n		}n	}n	return 0;n}nnpublic handle_botsayplugin()n{n	new var1 = 0;n	read_argv(1, var1, 7);n	new var2;n	var2 = str_to_num(var1);n	new var3 = 0;n	read_args(var3, 191);n	new var4 = 0;n	read_argv(2, var4, 7);n	new var5;n	var5 = str_to_num(var4);n	if (is_user_bot(var5))n	{n		new var6 = 0;n		new var7;n		var7 = strlen(var3);n		new var8;n		var8 = contain(var3, ":    ");n		copy(var6, var7 - var8 + 5, var3[var8 + 5]);n		if (HandleSay2(var5, var6))n		{n			server_cmd("botsayreturn %d 1", var2);n		}n	}n	return 0;n}nnpublic lock_unlock(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var898 == 1)n	{n		g_var898 = 0;n		console_print(_arg0, "[AMXX] Kamikaze mode lock is OFF.");n	}n	elsen	{n		g_var898 = 1;n		console_print(_arg0, "[AMXX] Kamikazi mode lock is ON.");n		if (g_vare5c == 1)n		{n			console_print(_arg0, "[AMXX] You have locked kamikazi ON mode.");n		}n		console_print(_arg0, "[AMXX] You have locled Kamikazi OFF mode.");n	}n	return 1;n}nnpublic new_spawn(_arg0)n{n	set_user_rendering(_arg0, g_var0, 255, 255, 255, g_var0, 16);n	3544[_arg0] = 0;n	return 0;n}nnpublic plugin_init()n{n	register_plugin(16, "3.1.2", "eisbein based of GIR");n	register_cvar("amx_luds_kamikaze", "v3.1.2", g_var4, g_var0);n	register_concmd("amx_timebombs", "amx_timebombs", 16, "<on |off>   turns ability to kamikazi on and off");n	register_concmd("amx_timebombs_default", "amx_timebombs_d", 2048, "sets the current kamikazi mode as default");n	register_concmd("amx_timebomb_credit", "amx_tb_credit", 16, "<on |off>   turns kamikazi frag credit on and off");n	register_concmd("amx_timebomb_credit_default", "amx_tb_credit_d", 2048, "sets the current kamikazi frag credit mode as default");n	register_concmd("amx_timebomb", "admin_timebomb", 16, "< player >");n	register_concmd("amx_votetimebomb", "admin_votebomb", 33554432, "< part of nick >");n	register_concmd("amx_timebombs_lock", "lock_unlock", 2048, "Locks/unlocks the current timebombs mode");n	register_concmd("stopvote", "stopvote", 32, "stops vote in progress");n	register_clcmd("say", "HandleSay", -1, {0});n	register_concmd("say", "HandleSay", -1, {0});n	register_event("ResetHUD", "roundend_cleanup", 25096, "2&#Game_C", "2&#Game_w");n	register_srvcmd("botsay", "handle_botsayplugin", -1, {0});n	register_cvar("amx_kamikaze_obeyffcvar", 25392, g_var0, g_var0);n	register_cvar("amx_kamikaze_tkpunish1", 25492, g_var0, g_var0);n	register_cvar("amx_kamikaze_tkpunish2", 25592, g_var0, g_var0);n	register_cvar("amx_kamikaze_bombers", 25684, g_var0, g_var0);n	set_cvar_string("amx_kamikaze_obeyffcvar", 25788);n	set_cvar_string("amx_kamikaze_tkpunish1", 25888);n	set_cvar_string("amx_kamikaze_tkpunish2", 25988);n	register_cvar("amx_vote_inprogress", 26076, g_var0, g_var0);n	register_cvar("amx_last_voting", 26148, g_var0, g_var0);n	set_cvar_float("amx_last_voting", g_var0);n	register_menucmd(register_menuid("Should we blow up ", g_var0), 15, "vote_count");n	register_cvar("amx_votetimebomb_ratio", "0.51", g_var0, g_var0);n	g_varc2c = get_user_msgid("ScreenFade");n	g_varc30 = get_user_msgid("ScreenShake");n	set_task(1065353216, "timebomb_timer", 765, 26604, g_var0, 26608, 9999);n	ejl_vault("READ", "Timebombs", 26676);n	if (equal(2604, "off", g_var0))n	{n		g_vare5c = 0;n	}n	elsen	{n		g_vare5c = 1;n	}n	ejl_vault("READ", "Kamikazi_FragCredit", 26796);n	if (equal(2604, "off", g_var0))n	{n		g_vare60 = 0;n	}n	elsen	{n		g_vare60 = 1;n	}n	ejl_vault("READ", "TFC_Kamikazi_b", 26896);n	if (equal(2604, "off", g_var0))n	{n		g_var89c = 0;n	}n	elsen	{n		g_var89c = 1;n	}n	ejl_vault("WRITE", "CURRENT_VOTE", "NULL");n	set_task(1074580685, "set_kamik_rule", g_var0, {0}, g_var0, {0}, g_var0);n	register_event("ResetHUD", "new_spawn", 27148, {0});n	return 0;n}nnpublic plugin_log()n{n	new var1;n	var1 = read_logargc();n	if (var1 == 2)n	{n		new var2 = 0;n		read_logargv(1, var2, 31);n		if (var2 + 24/* ERROR unknown load Binary */ == 83)n		{n			round_start();n		}n	}n	elsen	{n		if (var1 == 3)n		{n			new var3 = 0;n			read_logargv(1, var3, 31);n			if (equal(var3, "changed role to", 15))n			{n				new var4 = 0;n				new var5 = 0;n				new var6 = 0;n				new var7 = 0;n				new var8 = 0;n				read_logargv(g_var0, var4, 63);n				read_logargv(2, var8, 31);n				new var9;n				var9 = strlen(var4);n				new var10;n				var10 = var9;n				new var11 = 0;n				while (var11 < var9)n				{n					var10 += -1;n					if (0 < var10)n					{n						if (var4[var10] == 60)n						{n							var7 += 1;n							if (var7 == 2)n							{n								copy(var5, var11 - var6, var4[var10 + 1]);n							}n							if (var7 == 1)n							{n								var6 = var11 + 2;n							}n						}n					}n					var11++;n				}n				new var12;n				var12 = find_player(22016, var5);n				if (!var12)n				{n					return 0;n				}n				if (equali(var8, "Spy", g_var0))n				{n					2472[var12] = 1;n				}n				elsen				{n					2472[var12] = 0;n				}n			}n		}n	}n	return 0;n}nnpublic plugin_precache()n{n	g_varc40 = precache_model("sprites/smoke.spr");n	g_varc44 = precache_model("sprites/white.spr");n	g_varc48 = precache_model("sprites/explode1.spr");n	g_varc34 = precache_model("sprites/glow01.spr");n	g_varc38 = precache_model("models/mapmodels/g_dynamite.mdl");n	g_varc3c = precache_model("models/hgibs.mdl");n	precache_sound("buttons/blip2.wav");n	return 0;n}nnpublic round_start()n{n	new var1;n	var1 = get_maxplayers() + 1;n	new var2 = 1;n	while (var2 < var1)n	{n		if (3544[var2] == 1)n		{n			set_user_rendering(var2, g_var0, 255, 255, 255, g_var0, 16);n			3544[var2] = 0;n		}n		var2++;n	}n	return 0;n}nnpublic roundend_cleanup()n{n	blowem_up(100);n	g_vare64 = 1;n	set_task(1097859072, "roundstart_delay", g_var0, {0}, g_var0, {0}, g_var0);n	return 0;n}nnpublic roundstart_delay()n{n	g_vare64 = 0;n	return 0;n}nnpublic set_kamik_rule()n{n	new var1 = 0;n	new var2 = 0;n	new var3 = 0;n	sub_138c(var2, 32);n	get_mapname(var1, 33);n	format(var3, 64, "%s/kamikazi.txt", var2);n	if (file_exists(var3) == 1)n	{n		new var4 = 0;n		new var5 = 0;n		new var6 = 0;n		new var7 = 0;n		new var8 = 0;n		while ((var4 = read_file(var3, var4, var5, 128, _unused_temp_)) != 0)n		{n			parse(var5, var6, 32, var7, 2, var8, 2);n			if (equali(var6, var1, g_var0))n			{n				if (equal(var7, 27224, 1))n				{n					g_vare5c = 1;n				}n				elsen				{n					g_vare5c = 0;n				}n				if (equal(var8, 27232, 1))n				{n					g_var898 = 1;n				}n			}n		}n	}n	return 1;n}nnpublic stopvote(_arg0, _arg1, _arg2)n{n	if (!sub_72c(_arg0, _arg1, _arg2, 1))n	{n		return 1;n	}n	if (g_var894 == 1)n	{n		new var1 = 0;n		get_user_name(_arg0, var1, 32);n		g_var88c = 1;n		client_print(_arg0, 2, "[AMXX]  ADMIN !!! Ignore the unknown command message -- its ok");n		client_print(g_var0, "", "[AMXX]  %s has disabled the vote in progress.", var1);n	}n	return 0;n}nnpublic timebomb_timer()n{n	new var3;n	var3 = get_gametime();n	new var4 = 100;n	new var5;n	var5 = get_maxplayers() + 1;n	new var6 = 0;n	var6 = 1;n	while (var6 < var5)n	{n		new var1;n		if (3280[var6] != 0 && 3280[var6] < var4)n		{n			var4 = var6;n		}n		new var2;n		if (3412[var6] == 1 && sub_3bc(sub_174(sub_174(sub_174(3148[var6], g_var8), g_varc), 5), var3))n		{n			3412[var6] = 0;n			3280[var6] = 0;n		}n		var6++;n	}n	var6 = 1;n	while (var6 < var5)n	{n		if (0 < 3280[var6])n		{n			emit_sound(var6, "", "buttons/blip2.wav", 1065353216, 1061997773, g_var0, 100);n			new var7 = 0;n			get_user_origin(var6, var7, g_var0);n			message_begin(g_var0, 23, 18924, var6);n			write_byte(17);n			write_coord(var7);n			write_coord(var7 + 4/* ERROR unknown load Binary */);n			write_coord(var7 + 8/* ERROR unknown load Binary */ + 20);n			write_short(g_varc34);n			write_byte(20);n			write_byte(200);n			message_end();n			if (3280[var6] == 1)n			{n				blowem_up(var6);n			}n			elsen			{n				3280[var6] -= 1;n				if (var4 == var6)n				{n					new var8 = 0;n					new var9 = 0;n					get_user_name(var6, var8, 32);n					get_user_team(var6, var9, 32);n					if (equal(var9, 18936, 1))n					{n						set_hudmessage(200, g_var0, g_var0, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n					}n					elsen					{n						set_hudmessage(g_var0, 100, 200, 1022739087, 1061326684, 2, 1017370378, 1073741824, 1008981770, 1036831949, 2);n					}n					show_hudmessage(g_var0, "%s will explode in %d seconds.", var8, 3280[var6]);n					if (3280[var6] == 11)n					{n						client_cmd(g_var0, "spk "fvox/remaining"");n					}n					if (11 > 3280[var6])n					{n						new var10 = 0;n						num_to_word(3280[var6], var10, 48);n						client_cmd(g_var0, "spk "fvox/%s"", var10);n					}n				}n				if (is_user_alive(var6) == 0)n				{n					blowem_up(var6);n				}n			}n		}n		var6++;n	}n	return 0;n}nnpublic vote_count(_arg0, _arg1)n{n	ejl_vault("READ", "CURRENT_VOTE", 12916);n	if (equal(2604, "TIMEBOMB", g_var0))n	{n		new var1 = 0;n		get_user_name(_arg0, var1, 32);n		if (732[_arg0] != g_var2d8)n		{n			732[_arg0] = g_var2d8;n			if (!(sub_47c(get_cvar_float("amx_vote_answers"))))n			{n				client_print(g_var0, "", "[AMXX] %s voted for option # %d", var1, _arg1 + 1);n			}n			2168[_arg1] += 1;n		}n		elsen		{n			732[_arg0][1] += 1;n		}n		return 1;n	}n	return 0;n}nnsub_2fc(_arg0, _arg1)n{n	return 0 < floatcmp(_arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n	return floatadd(_arg0, float(_arg1));n}nnsub_b258(_arg0)n{n	new var2;n	var2 = g_varc * 10 + 20;n	new var1;n	if (var2 > 255 || var2 < 1)n	{n		var2 = 255;n	}n	message_begin(g_var0, 23, 21940, _arg0);n	write_byte(124);n	write_byte(_arg0);n	write_coord(15);n	write_short(g_varc38);n	write_short(var2);n	message_end();n	return 0;n}nnsub_72c(_arg0, _arg1, _arg2, _arg3)n{n	new var2 = 0;n	new var1;n	if (is_dedicated_server())n	{n		var1 = 0;n	}n	elsen	{n		var1 = 1;n	}n	if (var1 == _arg0)n	{n		var2 = 1;n	}n	elsen	{n		if (_arg1 == 16777216)n		{n			if (sub_64c(_arg0))n			{n				var2 = 1;n			}n		}n		if (_arg1 & get_user_flags(_arg0, g_var0))n		{n			var2 = 1;n		}n		if (_arg1 == 0)n		{n			var2 = 1;n		}n	}n	if (var2 == 0)n	{n		console_print(_arg0, "%L", _arg0, "NO_ACC_COM");n		return 0;n	}n	if (_arg3 > read_argc())n	{n		new var3 = 0;n		new var4 = 0;n		get_concmd(_arg2, var3, 31, _unused_temp_, var4, 127, _arg1, -1);n		console_print(_arg0, "%L:  %s %s", _arg0, "USAGE", var3, var4);n		return 0;n	}n	return 1;n}nnsub_bd0(_arg0, _arg1, _arg2)n{n	new var4;n	var4 = find_player("bl", _arg1);n	if (var4)n	{n		if (find_player("blj", _arg1) != var4)n		{n			console_print(_arg0, "%L", _arg0, "MORE_CL_MATCHT");n			return 0;n		}n	}n	elsen	{n		new var1;n		if ((var4 = find_player(388, _arg1)) == 0 && _arg1 == 35 && _arg1 + 4/* ERROR unknown load Binary */)n		{n			var4 = find_player(396, str_to_num(_arg1 + 4));n		}n	}n	if (!var4)n	{n		console_print(_arg0, "%L", _arg0, "CL_NOT_FOUND");n		return 0;n	}n	if (_arg2 & 1)n	{n		new var3;n		if (get_user_flags(var4, g_var0) & 1 && _arg2 & 2)n		{n			new var5 = 0;n			get_user_name(var4, var5, 31);n			console_print(_arg0, "%L", _arg0, "CLIENT_IMM", var5);n			return 0;n		}n	}n	if (_arg2 & 4)n	{n		if (!is_user_alive(var4))n		{n			new var6 = 0;n			get_user_name(var4, var6, 31);n			console_print(_arg0, "%L", _arg0, "CANT_PERF_DEAD", var6);n			return 0;n		}n	}n	if (_arg2 & 8)n	{n		if (is_user_bot(var4))n		{n			new var7 = 0;n			get_user_name(var4, var7, 31);n			console_print(_arg0, "%L", _arg0, "CANT_PERF_BOT", var7);n			return 0;n		}n	}n	return var4;n}nnsub_1868(_arg0, _arg1)n{n	message_begin(g_var0, 23, _arg0, g_var0);n	write_byte(21);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 16);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */ + 1936);n	write_short(g_varc44);n	write_byte(g_var0);n	write_byte(g_var0);n	write_byte("");n	write_byte(20);n	write_byte(g_var0);n	write_byte(188);n	write_byte("%L:  %s %s");n	write_byte(255);n	write_byte(255);n	write_byte(g_var0);n	message_end();n	message_begin(g_var0, 23, {0,0,0}, g_var0);n	write_byte(g_varc);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */);n	write_byte(188);n	write_byte(10);n	message_end();n	message_begin(g_var0, 23, _arg0, g_var0);n	write_byte("");n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */);n	write_short(g_varc48);n	write_byte(65);n	write_byte(10);n	write_byte(g_var0);n	message_end();n	message_begin(g_var0, 23, 3716, _arg1);n	write_byte(125);n	write_byte(_arg1);n	message_end();n	message_begin(g_var0, 23, _arg0, g_var0);n	write_byte(5);n	write_coord(_arg0);n	write_coord(_arg0 + 4/* ERROR unknown load Binary */);n	write_coord(_arg0 + 8/* ERROR unknown load Binary */);n	write_short(g_varc40);n	write_byte(20);n	write_byte(10);n	message_end();n	return 0;n}nnsub_a444(_arg0, _arg1, _arg2, _arg3, _arg4)n{n	new var3;n	var3 = get_user_health(_arg0);n	new var4 = 0;n	new var5 = 0;n	new var6 = 0;n	new var7 = 0;n	new var8 = 0;n	new var9 = 0;n	get_user_team(_arg0, var5, 31);n	get_user_name(_arg0, var9, 31);n	get_user_authid(_arg0, var7, 31);n	get_user_team(_arg1, var4, 31);n	get_user_name(_arg1, var8, 31);n	get_user_authid(_arg1, var6, 31);n	new var1;n	if (_arg2 == 1 || var3 < 50)n	{n		client_print(_arg0, "", "[AMXX] :  Sorry, the bomb killed you.");n		new var2;n		if (g_vare60 == 1 && 3412[_arg1] == 1)n		{n			new var10;n			var10 = get_user_frags(_arg1);n			if (_arg4 == 0)n			{n				2340[_arg1] += 1;n				set_user_frags(_arg1, var10 + 1);n			}n			elsen			{n				2208[_arg1] += 1;n				set_user_frags(_arg1, var10 + -1);n				new var11;n				var11 = get_cvar_num("amx_kamikaze_tkpunish1");n				new var12;n				var12 = get_cvar_num("amx_kamikaze_tkpunish2");n				if (var12 + -1 < 2208[_arg1])n				{n					if (var11 == 1)n					{n						client_cmd(_arg1, "echo You were kicked for team killing;disconnect");n					}n					if (var11 == 2)n					{n						client_cmd(_arg1, "echo You were banned for team killing");n						if (equal("4294967295", var6, g_var0))n						{n							new var13 = 0;n							get_user_ip(_arg1, var13, 31, 1);n							server_cmd("addip 180.0 %s;writeip", var13);n						}n						server_cmd("banid 180.0 %s kick;writeid", var6);n					}n				}n			}n			log_message(""%s<%d><%s><%s>" killed "%s<%d><%s><%s>" with "Kamikaze Bomb"", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5);n		}n		user_kill(_arg0, 1);n		sub_1868(_arg3, _arg0);n	}n	elsen	{n		client_print(_arg0, "", "[AMXX] :  Ouch, that bomb hurt you.");n		set_user_health(_arg0, var3 + -50);n		if (get_cvar_num("mp_logdetail") == 3)n		{n			log_message(""%s<%d><%s><%s>" attacked "%s<%d><%s><%s>" with "Kamikaze Bomb" (hit "chest") (damage "50") (health "%d")", var8, get_user_userid(_arg1), var6, var4, var9, get_user_userid(_arg0), var7, var5, get_user_health(_arg0));n		}n		if (_arg4 == 1)n		{n			new var14 = 0;n			new var15 = 0;n			get_players(var14, var15, 21836, var4);n			new var16 = 0;n			while (var16 < var15)n			{n				client_print(var14[var16], "", "%s  attacked a teammate", var8);n				var16++;n			}n		}n	}n	return 0;n}nnsub_2fc(_arg0, _arg1)n{n	return 0 <= floatcmp(_arg0, _arg1);n}nnsub_138c(_arg0, _arg1)n{n	return get_localinfo("amxx_configsdir", _arg0, _arg1);n}nnsub_174(_arg0, _arg1)n{n	return floatsub(_arg0, float(_arg1));n}nnsub_3bc(_arg0, _arg1)n{n	return 0 > floatcmp(_arg0, _arg1);n}nnsub_47c(_arg0, _arg1)n{n	return _arg0 & -1 == 0;n}nnsub_64c(_arg0)n{n	new var1;n	return get_user_flags(_arg0, g_var0) > 0 && !get_user_flags(_arg0, g_var0) & 33554432;n}nn
DoD Plugins Archive · Repository · Old Forum Threads · Maps · Admin · built 14 Sep 2026 00:34 UTC