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

dod_admin_spec_esp

by Unknown · 2006-02-19

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

dod_admin_spec_esp_147.amxx Compiled Plugin 18 KB Download
dod_admin_spec_esp_176.amxx Compiled Plugin 20 KB Download
dod_admin_spec_esp_604.amxx Compiled Plugin 17 KB Download
dod_admin_spec_esp_836.amxx Compiled Plugin 18 KB Download

Decompiled source reconstructed

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

// Decompiled from dod_admin_spec_esp_147.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 String:AUTH[76] = "AMXX DoD Community";nnew String:PLUGIN_NAME[96] = "DoD Admin Spectator ESP";nnew String:VERSION[16] = "0.3";nnew bool:g_is_spectating[33];nnew bool:ducking[33];nnew g_esp_box[33];nnew g_esp_line[33];nnew g_esp_aim[33];nnew g_esp_info[33];nnew g_who_viewing[33];nnew laser;nnew weapons[38][32] =n{n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 66, 97, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 97, 118, 45, 75, 110, 105, 102, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		67, 111, 108, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		76, 117, 103, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 97, 114, 97, 110, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		84, 104, 111, 109, 112, 115, 111, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 84, 71, 45, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 112, 114, 105, 110, 103, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 65, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 80, 45, 52, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 105, 110, 97, 112, 112, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 97, 115, 104, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		51, 48, 45, 67, 97, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 104, 111, 118, 101, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 101, 97, 115, 101, 103, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 52, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 116, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 114, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		87, 101, 98, 108, 101, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 97, 122, 111, 111, 107, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 97, 110, 122, 101, 114, 115, 99, 104, 114, 101, 99, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 73, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 105, 108, 108, 115, 32, 66, 111, 109, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 121, 107, 101, 115, 32, 70, 97, 105, 114, 98, 97, 105, 114, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	}n};nFloat:operator*(Float:,_:)(Float:oper1, oper2)n{n	return floatmul(oper1, float(oper2));n}nnbool:operator>(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 < floatcmp(oper1, oper2);n}nnbool:operator>=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 <= floatcmp(oper1, oper2);n}nnbool:operator<(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 > floatcmp(oper1, oper2);n}nnbool:operator<(_:,Float:)(oper1, Float:oper2)n{n	return 0 > floatcmp(float(oper1), oper2);n}nnbool:operator<=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 >= floatcmp(oper1, oper2);n}nnIVecFVec(IVec[3], Float:FVec[3])n{n	FVec[0] = float(IVec[0]);n	FVec[1] = float(IVec[1]);n	FVec[2] = float(IVec[2]);n	return 1;n}nnget_user_button(id)n{n	return entity_get_int(id, 34);n}nnVelocityByAim(iIndex, iVelocity, Float:vRetValue[3])n{n	return velocity_by_aim(iIndex, iVelocity, vRetValue);n}nnpublic plugin_precache()n{n	laser = precache_model("sprites/zbeam4.spr");n	return 0;n}nnpublic plugin_init()n{n	register_plugin(PLUGIN_NAME, VERSION, AUTH);n	register_concmd("esp_start", "esp_start", 524288, "Starts the ESP For this User");n	register_concmd("esp_stop", "esp_stop", 524288, "Stops the ESP For this User");n	register_clcmd("esp_menu", "show_use_menu", 524288, "Shows admins ESP for Detecting Hackers");n	register_menucmd(register_menuid("yESP Menu:", AUTH), 1023, "esp_menu_cmd");n	register_event("TextMsg", "hook_spec_mode", "bd", "2&#Spec_Mode");n	register_event("StatusValue", "hook_statusvalue", 7208, {0});n	register_event("PTeam", "hook_team", 7284, "2=1", "2=2");n	register_cvar("esp_active", 7368, AUTH, AUTH);n	register_cvar("esp_repeat", "0.3", AUTH, AUTH);n	return 0;n}nnpublic client_PreThink(id)n{n	if (!is_user_connected(id))n	{n		return 0;n	}n	new button = get_user_button(id);n	if (button)n	{n		if (button & 4)n		{n			ducking[id] = 1;n		}n		elsen		{n			ducking[id] = 0;n		}n		return 0;n	}n	return 0;n}nnpublic esp_start(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new param[1];n	param[0] = id;n	set_task(get_cvar_float("esp_repeat"), "draw_esp", id + 263548, param, 1, 7560, AUTH);n	client_print(id, 4, "ESP Started");n	return 0;n}nnpublic esp_stop(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	remove_task(id + 263548, AUTH);n	client_print(id, 4, "ESP Stopped");n	return 0;n}nnpublic show_use_menu(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new szMenuBody[256];n	new len = format(szMenuBody, 255, "yESP Menu:n");n	len = format(szMenuBody[len], 255 - len, "nr1. wStart") + len;n	len = format(szMenuBody[len], 255 - len, "nr2. wStop") + len;n	new var2;n	if (g_esp_box[id])n	{n		var2 = 7992;n	}n	elsen	{n		var2 = 8004;n	}n	len = format(szMenuBody[len], 255 - len, "nr3. wDraw Box %s", var2) + len;n	new var3;n	if (g_esp_line[id])n	{n		var3 = 8104;n	}n	elsen	{n		var3 = 8116;n	}n	len = format(szMenuBody[len], 255 - len, "nr4. wDraw Line %s", var3) + len;n	new var4;n	if (g_esp_aim[id])n	{n		var4 = 8212;n	}n	elsen	{n		var4 = 8224;n	}n	len = format(szMenuBody[len], 255 - len, "nr5. wAim Info %s", var4) + len;n	new var5;n	if (g_esp_info[id])n	{n		var5 = 8324;n	}n	elsen	{n		var5 = 8336;n	}n	len = format(szMenuBody[len], 255 - len, "nr6. wDraw Info %s", var5) + len;n	len = format(szMenuBody[len], 255 - len, "nr0. wExit") + len;n	show_menu(id, 575, szMenuBody, -1, {0});n	return 1;n}nnpublic esp_menu_cmd(id, key)n{n	switch (key)n	{n		case 0:n		{n			client_cmd(id, "esp_start");n		}n		case 1:n		{n			client_cmd(id, "esp_stop");n		}n		case 2:n		{n			g_esp_box[id] = 1 - g_esp_box[id];n		}n		case 3:n		{n			g_esp_line[id] = 1 - g_esp_line[id];n		}n		case 4:n		{n			g_esp_aim[id] = 1 - g_esp_aim[id];n		}n		case 5:n		{n			g_esp_info[id] = 1 - g_esp_info[id];n		}n		case 9:n		{n			return 1;n		}n		default:n		{n		}n	}n	client_cmd(id, "esp_menu");n	return 1;n}nnpublic hook_spec_mode(id)n{n	new string[32];n	read_data(2, string, 31);n	new var1;n	if (equal(string, "#Spec_Mode2", AUTH) || equal(string, "#Spec_Mode4", AUTH))n	{n		g_is_spectating[id] = 1;n	}n	elsen	{n		g_is_spectating[id] = 0;n	}n	return 0;n}nnpublic hook_statusvalue(id)n{n	g_who_viewing[id] = entity_get_int(id, 4);n	return 0;n}nnpublic hook_team(id)n{n	g_is_spectating[id] = 0;n	remove_task(id + 263548, AUTH);n	return 0;n}nnpublic client_putinserver(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	g_who_viewing[id] = 0;n	return 0;n}nnpublic client_disconnect(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	g_who_viewing[id] = 0;n	return 0;n}nnpublic draw_esp(param[])n{n	new id = param[0];n	new var1;n	if (!get_cvar_num("esp_active") || is_user_alive(id) || !get_user_flags(id, AUTH) & 524288 || !g_is_spectating[id])n	{n		return 0;n	}n	new who_watching = g_who_viewing[id];n	if (!is_user_connected(who_watching))n	{n		return 0;n	}n	new Float:viewed_origin[3] = 0.0;n	new players[32];n	new count;n	get_players(players, count, 8660, 8668);n	new x;n	while (x < count)n	{n		if (!is_user_connected(who_watching))n		{n			return 0;n		}n		entity_get_vector(who_watching, AUTH, viewed_origin);n		if (who_watching != players[x])n		{n			new target_team = get_user_team(players[x], {0}, AUTH);n			new Float:target_origin[3] = 0.0;n			entity_get_vector(players[x], AUTH, target_origin);n			new Float:distance = vector_distance(viewed_origin, target_origin);n			if (g_esp_line[id] == 1)n			{n				new width;n				if (distance < 2040.0)n				{n					width = 255 - floatround(floatdiv(distance, 1090519040), AUTH) / 3;n				}n				elsen				{n					width = 1;n				}n				make_TE_BEAMENTPOINT(id, target_origin, width, target_team);n			}n			new Float:v_middle[3] = 0.0;n			subVec(target_origin, viewed_origin, v_middle);n			if (g_esp_box[id] == 1)n			{n				new Float:v_hitpoint[3] = 0.0;n				trace_line(-1, viewed_origin, target_origin, v_hitpoint);n				new Float:distance_to_hitpoint = vector_distance(viewed_origin, v_hitpoint);n				new Float:scaled_bone_len = 0.0;n				new Float:scaled_bone_width = 0.0;n				if (ducking[players[x]])n				{n					scaled_bone_len = floatmul(floatdiv(distance_to_hitpoint, distance), floatsub(1112014848, 1099956224));n					scaled_bone_width = floatmul(floatdiv(distance_to_hitpoint, distance), floatadd(1125515264, 1084227584));n				}n				elsen				{n					scaled_bone_len = floatmul(1112014848, floatdiv(distance_to_hitpoint, distance));n					scaled_bone_width = floatmul(1125515264, floatdiv(distance_to_hitpoint, distance));n				}n				new Float:v_bone_start[3] = 0.0;n				new Float:v_bone_end[3] = 0.0;n				new Float:offset_vector[3] = 0.0;n				normalize(v_middle, offset_vector, floatsub(distance_to_hitpoint, 1092616192));n				new Float:eye_level[3] = 0.0;n				copyVec(viewed_origin, eye_level);n				if (ducking[players[x]])n				{n					new var2 = eye_level[2];n					var2 = floatadd(1095027917, var2);n				}n				elsen				{n					new var3 = eye_level[2];n					var3 = floatadd(1099694080, var3);n				}n				addVec(offset_vector, eye_level);n				copyVec(offset_vector, v_bone_start);n				copyVec(offset_vector, v_bone_end);n				new var4 = v_bone_end[2];n				var4 = floatsub(var4, scaled_bone_len);n				new Float:distance_target_hitpoint = floatsub(distance, distance_to_hitpoint);n				new actual_bright = 255;n				if (distance_target_hitpoint < 2040.0)n				{n					actual_bright = 255 - floatround(floatdiv(distance_target_hitpoint, 1094713344), AUTH);n				}n				elsen				{n					actual_bright = 85;n				}n				make_TE_BEAMPOINTS(id, v_bone_start, v_bone_end, floatround(scaled_bone_width, AUTH), actual_bright);n			}n			if (g_esp_info[id] == 1)n			{n				if (is_in_viewcone(who_watching, target_origin))n				{n					new Float:xp = 2.0;n					new Float:yp = 2.0;n					get_screen_pos(id, v_middle, xp, yp);n					draw_info(id, players[x], distance, xp, yp);n				}n			}n		}n		x++;n	}n	if (g_esp_aim[id] == 1)n	{n		new tmp[3];n		new Float:start[3] = 0.0;n		new Float:end[3] = 0.0;n		get_user_origin(who_watching, tmp, 1);n		IVecFVec(tmp, start);n		get_user_origin(who_watching, tmp, "");n		IVecFVec(tmp, end);n		make_TE_AIMPOINTS(id, start, end);n	}n	return 0;n}nnFloat:get_screen_pos(target_id, Float:v_me_to_target[3], &Float:xp, &Float:yp)n{n	new Float:v_aim[3] = 0.0;n	VelocityByAim(target_id, 1, v_aim);n	new Float:aim[3] = 0.0;n	copyVec(v_aim, aim);n	v_aim[2] = 0.0;n	new Float:v_target[3] = 0.0;n	copyVec(v_me_to_target, v_target);n	v_target[2] = 0.0;n	new Float:x_angle = 0.0;n	xp = get_screen_pos_x(v_target, v_aim, x_angle);n	yp = get_screen_pos_y(v_me_to_target, aim);n	return x_angle;n}nnFloat:get_screen_pos_x(Float:target[3], Float:aim[3], &Float:xangle)n{n	new Float:x_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:x_pos = 0.0;n	if (scalar_triple_product(aim, target) < 0)n	{n		x_angle *= -1;n	}n	new var1;n	if (x_angle >= -45.0 && x_angle <= 45.0)n	{n		x_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(x_angle, 1)), 1073741824));n		xangle = x_angle;n		return x_pos;n	}n	xangle = 0;n	return -2.0;n}nnFloat:get_screen_pos_y(Float:v_target[3], Float:aim[3])n{n	new Float:target[3] = 0.0;n	rotateVectorZ(v_target, aim, target);n	new Float:y_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:y_pos = 0.0;n	new Float:norm_target[3] = 0.0;n	new Float:norm_aim[3] = 0.0;n	normalize(v_target, norm_target, 1.0);n	normalize(aim, norm_aim, 1.0);n	if (norm_target[2] < norm_aim[2])n	{n		y_angle *= -1;n	}n	new var1;n	if (y_angle >= -45.0 && y_angle <= 45.0)n	{n		y_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(y_angle, 1)), 1073741824));n		new var2;n		if (y_pos >= 0.0 && y_pos <= 1.0)n		{n			return y_pos;n		}n	}n	return -2.0;n}nndraw_info(id, target_id, Float:distance, Float:xp, Float:yp)n{n	new var1;n	if (xp > 0.0 && xp <= 1.0 && yp > 0.0 && yp <= 1.0)n	{n		set_hudmessage(255, 255, AUTH, floatabs(floatsub(xp, 1025758986)), floatabs(yp), AUTH, AUTH, get_cvar_float("esp_repeat"), 1036831949, 1045220557, 4);n		new name[33];n		get_user_name(target_id, name, 32);n		new health = get_user_health(target_id);n		new clip;n		new ammo;n		new weapon_id = dod_get_user_weapon(target_id, clip, ammo);n		new var2;n		if (weapon_id < 0 || weapon_id > 38)n		{n			weapon_id = 0;n		}n		show_hudmessage(id, "[%s]nHealth: %d Distance: %dn%snclip: %d ammo: %d", name, health, floatround(distance, AUTH), weapons[weapon_id], clip, ammo);n	}n	return 0;n}nnFloat:getVecLen(Float:Vec[3])n{n	new Float:VecNull[3] = 0.0;n	new Float:len = vector_distance(Vec, VecNull);n	return len;n}nnFloat:scalar_triple_product(Float:a[3], Float:b[3])n{n	new Float:up[3] = {0.0,0.0,4.6006E-41};n	new Float:Ret[3] = 0.0;n	Ret[0] = floatsub(floatmul(a[1], b[2]), floatmul(a[2], b[1]));n	Ret[1] = floatsub(floatmul(a[2], b[0]), floatmul(a[0], b[2]));n	Ret[2] = floatsub(floatmul(a[0], b[1]), floatmul(a[1], b[0]));n	return vectorProduct(Ret, up);n}nnnormalize(Float:Vec[3], Float:Ret[3], Float:multiplier)n{n	new Float:len = getVecLen(Vec);n	copyVec(Vec, Ret);n	new var1 = Ret;n	var1[0] = floatdiv(var1[0], len);n	new var2 = Ret[1];n	var2 = floatdiv(var2, len);n	new var3 = Ret[2];n	var3 = floatdiv(var3, len);n	new var4 = Ret;n	var4[0] = floatmul(var4[0], multiplier);n	new var5 = Ret[1];n	var5 = floatmul(var5, multiplier);n	new var6 = Ret[2];n	var6 = floatmul(var6, multiplier);n	return 0;n}nnrotateVectorZ(Float:Vec[3], Float:direction[3], Float:Ret[3])n{n	new Float:tmp[3] = 0.0;n	copyVec(Vec, tmp);n	tmp[2] = 0.0;n	new Float:dest_len = getVecLen(tmp);n	copyVec(direction, tmp);n	tmp[2] = 0.0;n	new Float:tmp2[3] = 0.0;n	normalize(tmp, tmp2, dest_len);n	tmp2[2] = Vec[2];n	copyVec(tmp2, Ret);n	return 0;n}nnFloat:vectorProduct(Float:Vec1[3], Float:Vec2[3])n{n	return floatadd(floatadd(floatmul(Vec1[0], Vec2[0]), floatmul(Vec1[1], Vec2[1])), floatmul(Vec1[2], Vec2[2]));n}nncopyVec(Float:Vec[3], Float:Ret[3])n{n	Ret[0] = Vec[0];n	Ret[1] = Vec[1];n	Ret[2] = Vec[2];n	return 0;n}nnsubVec(Float:Vec1[3], Float:Vec2[3], Float:Ret[3])n{n	Ret[0] = floatsub(Vec1[0], Vec2[0]);n	Ret[1] = floatsub(Vec1[1], Vec2[1]);n	Ret[2] = floatsub(Vec1[2], Vec2[2]);n	return 0;n}nnaddVec(Float:Vec1[3], Float:Vec2[3])n{n	new var1 = Vec1;n	var1[0] = floatadd(var1[0], Vec2[0]);n	new var2 = Vec1[1];n	var2 = floatadd(var2, Vec2[1]);n	new var3 = Vec1[2];n	var3 = floatadd(var3, Vec2[2]);n	return 0;n}nnmake_TE_BEAMPOINTS(id, Float:Vec1[3], Float:Vec2[3], width, brightness)n{n	message_begin(8, 23, 8932, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(brightness);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_BEAMENTPOINT(id, Float:target_origin[3], width, target_team)n{n	message_begin(8, 23, 8988, id);n	write_byte(1);n	write_short(id);n	write_coord(floatround(target_origin[0], AUTH));n	write_coord(floatround(target_origin[1], AUTH));n	write_coord(floatround(target_origin[2], AUTH));n	write_short(laser);n	write_byte(1);n	write_byte(1000);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	if (target_team == 1)n	{n		write_byte(50);n		write_byte(AUTH);n		write_byte(255);n	}n	elsen	{n		if (target_team == 2)n		{n			write_byte(255);n			write_byte(AUTH);n			write_byte(50);n		}n	}n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_AIMPOINTS(id, Float:Vec1[3], Float:Vec2[3])n{n	message_begin(8, 23, 9044, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(1);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nn

Decompiled source reconstructed

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

// Decompiled from dod_admin_spec_esp_176.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 String:AUTH[76] = "AMXX DoD Community";nnew String:PLUGIN_NAME[96] = "DoD Admin Spectator ESP";nnew String:VERSION[16] = "0.3";nnew bool:g_is_spectating[33];nnew bool:ducking[33];nnew g_esp_box[33];nnew g_esp_line[33];nnew g_esp_aim[33];nnew g_esp_info[33];nnew laser;nnew weapons[38][32] =n{n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 66, 97, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 97, 118, 45, 75, 110, 105, 102, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		67, 111, 108, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		76, 117, 103, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 97, 114, 97, 110, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		84, 104, 111, 109, 112, 115, 111, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 84, 71, 45, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 112, 114, 105, 110, 103, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 65, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 80, 45, 52, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 105, 110, 97, 112, 112, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 97, 115, 104, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		51, 48, 45, 67, 97, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 104, 111, 118, 101, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 101, 97, 115, 101, 103, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 52, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 116, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 114, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		87, 101, 98, 108, 101, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 97, 122, 111, 111, 107, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 97, 110, 122, 101, 114, 115, 99, 104, 114, 101, 99, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 73, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 105, 108, 108, 115, 32, 66, 111, 109, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 121, 107, 101, 115, 32, 70, 97, 105, 114, 98, 97, 105, 114, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	}n};nFloat:operator*(Float:,_:)(Float:oper1, oper2)n{n	return floatmul(oper1, float(oper2));n}nnbool:operator>(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 < floatcmp(oper1, oper2);n}nnbool:operator>=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 <= floatcmp(oper1, oper2);n}nnbool:operator<(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 > floatcmp(oper1, oper2);n}nnbool:operator<(_:,Float:)(oper1, Float:oper2)n{n	return 0 > floatcmp(float(oper1), oper2);n}nnbool:operator<=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 >= floatcmp(oper1, oper2);n}nnIVecFVec(IVec[3], Float:FVec[3])n{n	FVec[0] = float(IVec[0]);n	FVec[1] = float(IVec[1]);n	FVec[2] = float(IVec[2]);n	return 1;n}nnget_user_button(id)n{n	return entity_get_int(id, 34);n}nnVelocityByAim(iIndex, iVelocity, Float:vRetValue[3])n{n	return velocity_by_aim(iIndex, iVelocity, vRetValue);n}nnpublic plugin_precache()n{n	laser = precache_model("sprites/zbeam4.spr");n	return 0;n}nnpublic plugin_init()n{n	register_plugin(PLUGIN_NAME, VERSION, AUTH);n	register_concmd("esp_start", "esp_start", 524288, "Starts the ESP For this User");n	register_concmd("esp_stop", "esp_stop", 524288, "Stops the ESP For this User");n	register_clcmd("esp_menu", "show_use_menu", 524288, "Shows admins ESP for Detecting Hackers");n	register_menucmd(register_menuid("yESP Menu:", AUTH), 1023, "esp_menu_cmd");n	register_event("TextMsg", "hook_spec_mode", "bd", "2&#Spec_Mode");n	register_event("PTeam", "hook_team", 7024, "2=1", "2=2");n	register_cvar("esp_active", 7108, AUTH, AUTH);n	register_cvar("esp_repeat", "0.3", AUTH, AUTH);n	return 0;n}nnpublic client_PreThink(id)n{n	if (!is_user_connected(id))n	{n		return 0;n	}n	new button = get_user_button(id);n	if (button)n	{n		if (button & 4)n		{n			ducking[id] = 1;n		}n		elsen		{n			ducking[id] = 0;n		}n		return 0;n	}n	return 0;n}nnpublic esp_start(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new param[1];n	param[0] = id;n	set_task(get_cvar_float("esp_repeat"), "draw_esp", id + 263548, param, 1, 7300, AUTH);n	client_print(id, 4, "ESP Started");n	return 0;n}nnpublic esp_stop(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	remove_task(id + 263548, AUTH);n	client_print(id, 4, "ESP Stopped");n	return 0;n}nnpublic show_use_menu(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new szMenuBody[256];n	new len = format(szMenuBody, 255, "yESP Menu:n");n	len = format(szMenuBody[len], 255 - len, "nr1. wStart") + len;n	len = format(szMenuBody[len], 255 - len, "nr2. wStop") + len;n	new var2;n	if (g_esp_box[id])n	{n		var2 = 7732;n	}n	elsen	{n		var2 = 7744;n	}n	len = format(szMenuBody[len], 255 - len, "nr3. wDraw Box %s", var2) + len;n	new var3;n	if (g_esp_line[id])n	{n		var3 = 7844;n	}n	elsen	{n		var3 = 7856;n	}n	len = format(szMenuBody[len], 255 - len, "nr4. wDraw Line %s", var3) + len;n	new var4;n	if (g_esp_aim[id])n	{n		var4 = 7952;n	}n	elsen	{n		var4 = 7964;n	}n	len = format(szMenuBody[len], 255 - len, "nr5. wAim Info %s", var4) + len;n	new var5;n	if (g_esp_info[id])n	{n		var5 = 8064;n	}n	elsen	{n		var5 = 8076;n	}n	len = format(szMenuBody[len], 255 - len, "nr6. wDraw Info %s", var5) + len;n	len = format(szMenuBody[len], 255 - len, "nr0. wExit") + len;n	show_menu(id, 575, szMenuBody, -1, {0});n	return 1;n}nnpublic esp_menu_cmd(id, key)n{n	switch (key)n	{n		case 0:n		{n			client_cmd(id, "esp_start");n		}n		case 1:n		{n			client_cmd(id, "esp_stop");n		}n		case 2:n		{n			g_esp_box[id] = 1 - g_esp_box[id];n		}n		case 3:n		{n			g_esp_line[id] = 1 - g_esp_line[id];n		}n		case 4:n		{n			g_esp_aim[id] = 1 - g_esp_aim[id];n		}n		case 5:n		{n			g_esp_info[id] = 1 - g_esp_info[id];n		}n		case 9:n		{n			return 1;n		}n		default:n		{n		}n	}n	client_cmd(id, "esp_menu");n	return 1;n}nnpublic hook_spec_mode(id)n{n	new string[32];n	read_data(2, string, 31);n	new var1;n	if (equal(string, "#Spec_Mode2", AUTH) || equal(string, "#Spec_Mode4", AUTH))n	{n		g_is_spectating[id] = 1;n	}n	elsen	{n		g_is_spectating[id] = 0;n	}n	return 0;n}nnpublic hook_team(id)n{n	g_is_spectating[id] = 0;n	remove_task(id + 263548, AUTH);n	return 0;n}nnpublic client_putinserver(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	return 0;n}nnpublic client_disconnect(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	return 0;n}nnpublic draw_esp(param[])n{n	new id = param[0];n	new var1;n	if (!get_cvar_num("esp_active") || is_user_alive(id) || !get_user_flags(id, AUTH) & 524288 || !g_is_spectating[id])n	{n		return 0;n	}n	new who_watching;n	new body;n	get_user_aiming(id, who_watching, body, 9999);n	if (!is_user_connected(who_watching))n	{n		return 0;n	}n	new Float:viewed_origin[3] = 0.0;n	new players[32];n	new count;n	get_players(players, count, 8400, 8408);n	new x;n	while (x < count)n	{n		if (!is_user_connected(who_watching))n		{n			return 0;n		}n		entity_get_vector(who_watching, AUTH, viewed_origin);n		if (who_watching != players[x])n		{n			new target_team = get_user_team(players[x], {0}, AUTH);n			new Float:target_origin[3] = 0.0;n			entity_get_vector(players[x], AUTH, target_origin);n			new Float:distance = vector_distance(viewed_origin, target_origin);n			if (g_esp_line[id] == 1)n			{n				new width;n				if (distance < 2040.0)n				{n					width = 255 - floatround(floatdiv(distance, 1090519040), AUTH) / 3;n				}n				elsen				{n					width = 1;n				}n				make_TE_BEAMENTPOINT(id, target_origin, width, target_team);n			}n			new Float:v_middle[3] = 0.0;n			subVec(target_origin, viewed_origin, v_middle);n			if (g_esp_box[id] == 1)n			{n				new Float:v_hitpoint[3] = 0.0;n				trace_line(-1, viewed_origin, target_origin, v_hitpoint);n				new Float:distance_to_hitpoint = vector_distance(viewed_origin, v_hitpoint);n				new Float:scaled_bone_len = 0.0;n				new Float:scaled_bone_width = 0.0;n				if (ducking[players[x]])n				{n					scaled_bone_len = floatmul(floatdiv(distance_to_hitpoint, distance), floatsub(1112014848, 1099956224));n					scaled_bone_width = floatmul(floatdiv(distance_to_hitpoint, distance), floatadd(1125515264, 1084227584));n				}n				elsen				{n					scaled_bone_len = floatmul(1112014848, floatdiv(distance_to_hitpoint, distance));n					scaled_bone_width = floatmul(1125515264, floatdiv(distance_to_hitpoint, distance));n				}n				new Float:v_bone_start[3] = 0.0;n				new Float:v_bone_end[3] = 0.0;n				new Float:offset_vector[3] = 0.0;n				normalize(v_middle, offset_vector, floatsub(distance_to_hitpoint, 1092616192));n				new Float:eye_level[3] = 0.0;n				copyVec(viewed_origin, eye_level);n				if (ducking[players[x]])n				{n					new var2 = eye_level[2];n					var2 = floatadd(1095027917, var2);n				}n				elsen				{n					new var3 = eye_level[2];n					var3 = floatadd(1099694080, var3);n				}n				addVec(offset_vector, eye_level);n				copyVec(offset_vector, v_bone_start);n				copyVec(offset_vector, v_bone_end);n				new var4 = v_bone_end[2];n				var4 = floatsub(var4, scaled_bone_len);n				new Float:distance_target_hitpoint = floatsub(distance, distance_to_hitpoint);n				new actual_bright = 255;n				if (distance_target_hitpoint < 2040.0)n				{n					actual_bright = 255 - floatround(floatdiv(distance_target_hitpoint, 1094713344), AUTH);n				}n				elsen				{n					actual_bright = 85;n				}n				make_TE_BEAMPOINTS(id, v_bone_start, v_bone_end, floatround(scaled_bone_width, AUTH), actual_bright);n			}n			if (g_esp_info[id] == 1)n			{n				if (is_in_viewcone(who_watching, target_origin))n				{n					new Float:xp = 2.0;n					new Float:yp = 2.0;n					get_screen_pos(id, v_middle, xp, yp);n					draw_info(id, players[x], distance, xp, yp);n				}n			}n		}n		x++;n	}n	if (g_esp_aim[id] == 1)n	{n		new tmp[3];n		new Float:start[3] = 0.0;n		new Float:end[3] = 0.0;n		get_user_origin(who_watching, tmp, 1);n		IVecFVec(tmp, start);n		get_user_origin(who_watching, tmp, "");n		IVecFVec(tmp, end);n		make_TE_AIMPOINTS(id, start, end);n	}n	return 0;n}nnFloat:get_screen_pos(target_id, Float:v_me_to_target[3], &Float:xp, &Float:yp)n{n	new Float:v_aim[3] = 0.0;n	VelocityByAim(target_id, 1, v_aim);n	new Float:aim[3] = 0.0;n	copyVec(v_aim, aim);n	v_aim[2] = 0.0;n	new Float:v_target[3] = 0.0;n	copyVec(v_me_to_target, v_target);n	v_target[2] = 0.0;n	new Float:x_angle = 0.0;n	xp = get_screen_pos_x(v_target, v_aim, x_angle);n	yp = get_screen_pos_y(v_me_to_target, aim);n	return x_angle;n}nnFloat:get_screen_pos_x(Float:target[3], Float:aim[3], &Float:xangle)n{n	new Float:x_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:x_pos = 0.0;n	if (scalar_triple_product(aim, target) < 0)n	{n		x_angle *= -1;n	}n	new var1;n	if (x_angle >= -45.0 && x_angle <= 45.0)n	{n		x_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(x_angle, 1)), 1073741824));n		xangle = x_angle;n		return x_pos;n	}n	xangle = 0;n	return -2.0;n}nnFloat:get_screen_pos_y(Float:v_target[3], Float:aim[3])n{n	new Float:target[3] = 0.0;n	rotateVectorZ(v_target, aim, target);n	new Float:y_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:y_pos = 0.0;n	new Float:norm_target[3] = 0.0;n	new Float:norm_aim[3] = 0.0;n	normalize(v_target, norm_target, 1.0);n	normalize(aim, norm_aim, 1.0);n	if (norm_target[2] < norm_aim[2])n	{n		y_angle *= -1;n	}n	new var1;n	if (y_angle >= -45.0 && y_angle <= 45.0)n	{n		y_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(y_angle, 1)), 1073741824));n		new var2;n		if (y_pos >= 0.0 && y_pos <= 1.0)n		{n			return y_pos;n		}n	}n	return -2.0;n}nndraw_info(id, target_id, Float:distance, Float:xp, Float:yp)n{n	new var1;n	if (xp > 0.0 && xp <= 1.0 && yp > 0.0 && yp <= 1.0)n	{n		set_hudmessage(255, 255, AUTH, floatabs(floatsub(xp, 1025758986)), floatabs(yp), AUTH, AUTH, get_cvar_float("esp_repeat"), 1036831949, 1045220557, 4);n		new name[33];n		get_user_name(target_id, name, 32);n		new health = get_user_health(target_id);n		new clip;n		new ammo;n		new weapon_id = dod_get_user_weapon(target_id, clip, ammo);n		new var2;n		if (weapon_id < 0 || weapon_id > 38)n		{n			weapon_id = 0;n		}n		show_hudmessage(id, "[%s]nHealth: %d Distance: %dn%snclip: %d ammo: %d", name, health, floatround(distance, AUTH), weapons[weapon_id], clip, ammo);n	}n	return 0;n}nnFloat:getVecLen(Float:Vec[3])n{n	new Float:VecNull[3] = 0.0;n	new Float:len = vector_distance(Vec, VecNull);n	return len;n}nnFloat:scalar_triple_product(Float:a[3], Float:b[3])n{n	new Float:up[3] = {0.0,0.0,4.6006E-41};n	new Float:Ret[3] = 0.0;n	Ret[0] = floatsub(floatmul(a[1], b[2]), floatmul(a[2], b[1]));n	Ret[1] = floatsub(floatmul(a[2], b[0]), floatmul(a[0], b[2]));n	Ret[2] = floatsub(floatmul(a[0], b[1]), floatmul(a[1], b[0]));n	return vectorProduct(Ret, up);n}nnnormalize(Float:Vec[3], Float:Ret[3], Float:multiplier)n{n	new Float:len = getVecLen(Vec);n	copyVec(Vec, Ret);n	new var1 = Ret;n	var1[0] = floatdiv(var1[0], len);n	new var2 = Ret[1];n	var2 = floatdiv(var2, len);n	new var3 = Ret[2];n	var3 = floatdiv(var3, len);n	new var4 = Ret;n	var4[0] = floatmul(var4[0], multiplier);n	new var5 = Ret[1];n	var5 = floatmul(var5, multiplier);n	new var6 = Ret[2];n	var6 = floatmul(var6, multiplier);n	return 0;n}nnrotateVectorZ(Float:Vec[3], Float:direction[3], Float:Ret[3])n{n	new Float:tmp[3] = 0.0;n	copyVec(Vec, tmp);n	tmp[2] = 0.0;n	new Float:dest_len = getVecLen(tmp);n	copyVec(direction, tmp);n	tmp[2] = 0.0;n	new Float:tmp2[3] = 0.0;n	normalize(tmp, tmp2, dest_len);n	tmp2[2] = Vec[2];n	copyVec(tmp2, Ret);n	return 0;n}nnFloat:vectorProduct(Float:Vec1[3], Float:Vec2[3])n{n	return floatadd(floatadd(floatmul(Vec1[0], Vec2[0]), floatmul(Vec1[1], Vec2[1])), floatmul(Vec1[2], Vec2[2]));n}nncopyVec(Float:Vec[3], Float:Ret[3])n{n	Ret[0] = Vec[0];n	Ret[1] = Vec[1];n	Ret[2] = Vec[2];n	return 0;n}nnsubVec(Float:Vec1[3], Float:Vec2[3], Float:Ret[3])n{n	Ret[0] = floatsub(Vec1[0], Vec2[0]);n	Ret[1] = floatsub(Vec1[1], Vec2[1]);n	Ret[2] = floatsub(Vec1[2], Vec2[2]);n	return 0;n}nnaddVec(Float:Vec1[3], Float:Vec2[3])n{n	new var1 = Vec1;n	var1[0] = floatadd(var1[0], Vec2[0]);n	new var2 = Vec1[1];n	var2 = floatadd(var2, Vec2[1]);n	new var3 = Vec1[2];n	var3 = floatadd(var3, Vec2[2]);n	return 0;n}nnmake_TE_BEAMPOINTS(id, Float:Vec1[3], Float:Vec2[3], width, brightness)n{n	message_begin(8, 23, 8672, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(brightness);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_BEAMENTPOINT(id, Float:target_origin[3], width, target_team)n{n	message_begin(8, 23, 8728, id);n	write_byte(1);n	write_short(id);n	write_coord(floatround(target_origin[0], AUTH));n	write_coord(floatround(target_origin[1], AUTH));n	write_coord(floatround(target_origin[2], AUTH));n	write_short(laser);n	write_byte(1);n	write_byte(1000);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	if (target_team == 1)n	{n		write_byte(50);n		write_byte(AUTH);n		write_byte(255);n	}n	elsen	{n		if (target_team == 2)n		{n			write_byte(255);n			write_byte(AUTH);n			write_byte(50);n		}n	}n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_AIMPOINTS(id, Float:Vec1[3], Float:Vec2[3])n{n	message_begin(8, 23, 8784, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(1);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nn

Decompiled source reconstructed

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

// Decompiled from dod_admin_spec_esp_604.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 String:AUTH[76] = "AMXX DoD Community";nnew String:PLUGIN_NAME[96] = "DoD Admin Spectator ESP";nnew String:VERSION[16] = "0.3";nnew bool:g_is_spectating[33];nnew bool:ducking[33];nnew g_esp_box[33];nnew g_esp_line[33];nnew g_esp_aim[33];nnew g_esp_info[33];nnew laser;nnew weapons[38][32] =n{n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 66, 97, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 97, 118, 45, 75, 110, 105, 102, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		67, 111, 108, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		76, 117, 103, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 97, 114, 97, 110, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		84, 104, 111, 109, 112, 115, 111, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 84, 71, 45, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 112, 114, 105, 110, 103, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 65, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 80, 45, 52, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 105, 110, 97, 112, 112, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 97, 115, 104, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		51, 48, 45, 67, 97, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 104, 111, 118, 101, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 101, 97, 115, 101, 103, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 52, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 116, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 114, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		87, 101, 98, 108, 101, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 97, 122, 111, 111, 107, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 97, 110, 122, 101, 114, 115, 99, 104, 114, 101, 99, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 73, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 105, 108, 108, 115, 32, 66, 111, 109, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 121, 107, 101, 115, 32, 70, 97, 105, 114, 98, 97, 105, 114, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	}n};nFloat:operator*(Float:,_:)(Float:oper1, oper2)n{n	return floatmul(oper1, float(oper2));n}nnbool:operator>(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 < floatcmp(oper1, oper2);n}nnbool:operator>=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 <= floatcmp(oper1, oper2);n}nnbool:operator<(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 > floatcmp(oper1, oper2);n}nnbool:operator<(_:,Float:)(oper1, Float:oper2)n{n	return 0 > floatcmp(float(oper1), oper2);n}nnbool:operator<=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 >= floatcmp(oper1, oper2);n}nnIVecFVec(IVec[3], Float:FVec[3])n{n	FVec[0] = float(IVec[0]);n	FVec[1] = float(IVec[1]);n	FVec[2] = float(IVec[2]);n	return 1;n}nnget_user_button(id)n{n	return entity_get_int(id, 34);n}nnVelocityByAim(iIndex, iVelocity, Float:vRetValue[3])n{n	return velocity_by_aim(iIndex, iVelocity, vRetValue);n}nnpublic plugin_precache()n{n	laser = precache_model("sprites/zbeam4.spr");n	return 0;n}nnpublic plugin_init()n{n	register_plugin(PLUGIN_NAME, VERSION, AUTH);n	register_concmd("esp_start", "esp_start", 524288, "Starts the ESP For this User");n	register_concmd("esp_stop", "esp_stop", 524288, "Stops the ESP For this User");n	register_clcmd("esp_menu", "show_use_menu", 524288, "Shows admins ESP for Detecting Hackers");n	register_menucmd(register_menuid("yESP Menu:", AUTH), 1023, "esp_menu_cmd");n	register_event("TextMsg", "hook_spec_mode", "bd", "2&#Spec_Mode");n	register_event("PTeam", "hook_team", 7024, "2=1", "2=2");n	register_cvar("esp_active", 7108, AUTH, AUTH);n	register_cvar("esp_repeat", "0.3", AUTH, AUTH);n	return 0;n}nnpublic client_PreThink(id)n{n	if (!is_user_connected(id))n	{n		return 0;n	}n	new button = get_user_button(id);n	if (button)n	{n		if (button & 4)n		{n			ducking[id] = 1;n		}n		elsen		{n			ducking[id] = 0;n		}n		return 0;n	}n	return 0;n}nnpublic esp_start(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new param[1];n	param[0] = id;n	set_task(get_cvar_float("esp_repeat"), "draw_esp", id + 263548, param, 1, 7300, AUTH);n	client_print(id, 4, "ESP Started");n	return 0;n}nnpublic esp_stop(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	remove_task(id + 263548, AUTH);n	client_print(id, 4, "ESP Stopped");n	return 0;n}nnpublic show_use_menu(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new szMenuBody[256];n	new len = format(szMenuBody, 255, "yESP Menu:n");n	len = format(szMenuBody[len], 255 - len, "nr1. wStart") + len;n	len = format(szMenuBody[len], 255 - len, "nr2. wStop") + len;n	new var2;n	if (g_esp_box[id])n	{n		var2 = 7732;n	}n	elsen	{n		var2 = 7744;n	}n	len = format(szMenuBody[len], 255 - len, "nr3. wDraw Box %s", var2) + len;n	new var3;n	if (g_esp_line[id])n	{n		var3 = 7844;n	}n	elsen	{n		var3 = 7856;n	}n	len = format(szMenuBody[len], 255 - len, "nr4. wDraw Line %s", var3) + len;n	new var4;n	if (g_esp_aim[id])n	{n		var4 = 7952;n	}n	elsen	{n		var4 = 7964;n	}n	len = format(szMenuBody[len], 255 - len, "nr5. wAim Info %s", var4) + len;n	new var5;n	if (g_esp_info[id])n	{n		var5 = 8064;n	}n	elsen	{n		var5 = 8076;n	}n	len = format(szMenuBody[len], 255 - len, "nr6. wDraw Info %s", var5) + len;n	len = format(szMenuBody[len], 255 - len, "nr0. wExit") + len;n	show_menu(id, 575, szMenuBody, -1, {0});n	return 1;n}nnpublic esp_menu_cmd(id, key)n{n	switch (key)n	{n		case 0:n		{n			client_cmd(id, "esp_start");n		}n		case 1:n		{n			client_cmd(id, "esp_stop");n		}n		case 2:n		{n			g_esp_box[id] = 1 - g_esp_box[id];n		}n		case 3:n		{n			g_esp_line[id] = 1 - g_esp_line[id];n		}n		case 4:n		{n			g_esp_aim[id] = 1 - g_esp_aim[id];n		}n		case 5:n		{n			g_esp_info[id] = 1 - g_esp_info[id];n		}n		case 9:n		{n			return 1;n		}n		default:n		{n		}n	}n	client_cmd(id, "esp_menu");n	return 1;n}nnpublic hook_spec_mode(id)n{n	new string[32];n	read_data(2, string, 31);n	new var1;n	if (equal(string, "#Spec_Mode2", AUTH) || equal(string, "#Spec_Mode4", AUTH))n	{n		g_is_spectating[id] = 1;n	}n	elsen	{n		g_is_spectating[id] = 0;n	}n	return 0;n}nnpublic hook_team(id)n{n	g_is_spectating[id] = 0;n	remove_task(id + 263548, AUTH);n	return 0;n}nnpublic client_putinserver(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	return 0;n}nnpublic client_disconnect(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	return 0;n}nnpublic draw_esp(param[])n{n	new id = param[0];n	new var1;n	if (!get_cvar_num("esp_active") || is_user_alive(id) || !get_user_flags(id, AUTH) & 524288 || !g_is_spectating[id])n	{n		return 0;n	}n	new who_watching;n	new body;n	get_user_aiming(id, who_watching, body, 9999);n	if (!is_user_connected(who_watching))n	{n		return 0;n	}n	new Float:viewed_origin[3] = 0.0;n	new players[32];n	new count;n	get_players(players, count, 8400, 8408);n	new x;n	while (x < count)n	{n		if (!is_user_connected(who_watching))n		{n			return 0;n		}n		entity_get_vector(who_watching, AUTH, viewed_origin);n		if (who_watching != players[x])n		{n			new target_team = get_user_team(players[x], {0}, AUTH);n			new Float:target_origin[3] = 0.0;n			entity_get_vector(players[x], AUTH, target_origin);n			new Float:distance = vector_distance(viewed_origin, target_origin);n			if (g_esp_line[id] == 1)n			{n				new width;n				if (distance < 2040.0)n				{n					width = 255 - floatround(floatdiv(distance, 1090519040), AUTH) / 3;n				}n				elsen				{n					width = 1;n				}n				make_TE_BEAMENTPOINT(id, target_origin, width, target_team);n			}n			new Float:v_middle[3] = 0.0;n			subVec(target_origin, viewed_origin, v_middle);n			if (g_esp_box[id] == 1)n			{n				new Float:v_hitpoint[3] = 0.0;n				trace_line(-1, viewed_origin, target_origin, v_hitpoint);n				new Float:distance_to_hitpoint = vector_distance(viewed_origin, v_hitpoint);n				new Float:scaled_bone_len = 0.0;n				new Float:scaled_bone_width = 0.0;n				if (ducking[players[x]])n				{n					scaled_bone_len = floatmul(floatdiv(distance_to_hitpoint, distance), floatsub(1112014848, 1099956224));n					scaled_bone_width = floatmul(floatdiv(distance_to_hitpoint, distance), floatadd(1125515264, 1084227584));n				}n				elsen				{n					scaled_bone_len = floatmul(1112014848, floatdiv(distance_to_hitpoint, distance));n					scaled_bone_width = floatmul(1125515264, floatdiv(distance_to_hitpoint, distance));n				}n				new Float:v_bone_start[3] = 0.0;n				new Float:v_bone_end[3] = 0.0;n				new Float:offset_vector[3] = 0.0;n				normalize(v_middle, offset_vector, floatsub(distance_to_hitpoint, 1092616192));n				new Float:eye_level[3] = 0.0;n				copyVec(viewed_origin, eye_level);n				if (ducking[players[x]])n				{n					new var2 = eye_level[2];n					var2 = floatadd(1095027917, var2);n				}n				elsen				{n					new var3 = eye_level[2];n					var3 = floatadd(1099694080, var3);n				}n				addVec(offset_vector, eye_level);n				copyVec(offset_vector, v_bone_start);n				copyVec(offset_vector, v_bone_end);n				new var4 = v_bone_end[2];n				var4 = floatsub(var4, scaled_bone_len);n				new Float:distance_target_hitpoint = floatsub(distance, distance_to_hitpoint);n				new actual_bright = 255;n				if (distance_target_hitpoint < 2040.0)n				{n					actual_bright = 255 - floatround(floatdiv(distance_target_hitpoint, 1094713344), AUTH);n				}n				elsen				{n					actual_bright = 85;n				}n				make_TE_BEAMPOINTS(id, v_bone_start, v_bone_end, floatround(scaled_bone_width, AUTH), actual_bright);n			}n			if (g_esp_info[id] == 1)n			{n				if (is_in_viewcone(who_watching, target_origin))n				{n					new Float:xp = 2.0;n					new Float:yp = 2.0;n					get_screen_pos(id, v_middle, xp, yp);n					draw_info(id, players[x], distance, xp, yp);n				}n			}n		}n		x++;n	}n	if (g_esp_aim[id] == 1)n	{n		new tmp[3];n		new Float:start[3] = 0.0;n		new Float:end[3] = 0.0;n		get_user_origin(who_watching, tmp, 1);n		IVecFVec(tmp, start);n		get_user_origin(who_watching, tmp, "");n		IVecFVec(tmp, end);n		make_TE_AIMPOINTS(id, start, end);n	}n	return 0;n}nnFloat:get_screen_pos(target_id, Float:v_me_to_target[3], &Float:xp, &Float:yp)n{n	new Float:v_aim[3] = 0.0;n	VelocityByAim(target_id, 1, v_aim);n	new Float:aim[3] = 0.0;n	copyVec(v_aim, aim);n	v_aim[2] = 0.0;n	new Float:v_target[3] = 0.0;n	copyVec(v_me_to_target, v_target);n	v_target[2] = 0.0;n	new Float:x_angle = 0.0;n	xp = get_screen_pos_x(v_target, v_aim, x_angle);n	yp = get_screen_pos_y(v_me_to_target, aim);n	return x_angle;n}nnFloat:get_screen_pos_x(Float:target[3], Float:aim[3], &Float:xangle)n{n	new Float:x_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:x_pos = 0.0;n	if (scalar_triple_product(aim, target) < 0)n	{n		x_angle *= -1;n	}n	new var1;n	if (x_angle >= -45.0 && x_angle <= 45.0)n	{n		x_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(x_angle, 1)), 1073741824));n		xangle = x_angle;n		return x_pos;n	}n	xangle = 0;n	return -2.0;n}nnFloat:get_screen_pos_y(Float:v_target[3], Float:aim[3])n{n	new Float:target[3] = 0.0;n	rotateVectorZ(v_target, aim, target);n	new Float:y_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:y_pos = 0.0;n	new Float:norm_target[3] = 0.0;n	new Float:norm_aim[3] = 0.0;n	normalize(v_target, norm_target, 1.0);n	normalize(aim, norm_aim, 1.0);n	if (norm_target[2] < norm_aim[2])n	{n		y_angle *= -1;n	}n	new var1;n	if (y_angle >= -45.0 && y_angle <= 45.0)n	{n		y_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(y_angle, 1)), 1073741824));n		new var2;n		if (y_pos >= 0.0 && y_pos <= 1.0)n		{n			return y_pos;n		}n	}n	return -2.0;n}nndraw_info(id, target_id, Float:distance, Float:xp, Float:yp)n{n	new var1;n	if (xp > 0.0 && xp <= 1.0 && yp > 0.0 && yp <= 1.0)n	{n		set_hudmessage(255, 255, AUTH, floatabs(floatsub(xp, 1025758986)), floatabs(yp), AUTH, AUTH, get_cvar_float("esp_repeat"), 1036831949, 1045220557, 4);n		new name[33];n		get_user_name(target_id, name, 32);n		new health = get_user_health(target_id);n		new clip;n		new ammo;n		new weapon_id = dod_get_user_weapon(target_id, clip, ammo);n		new var2;n		if (weapon_id < 0 || weapon_id > 38)n		{n			weapon_id = 0;n		}n		show_hudmessage(id, "[%s]nHealth: %d Distance: %dn%snclip: %d ammo: %d", name, health, floatround(distance, AUTH), weapons[weapon_id], clip, ammo);n	}n	return 0;n}nnFloat:getVecLen(Float:Vec[3])n{n	new Float:VecNull[3] = 0.0;n	new Float:len = vector_distance(Vec, VecNull);n	return len;n}nnFloat:scalar_triple_product(Float:a[3], Float:b[3])n{n	new Float:up[3] = {0.0,0.0,4.6006E-41};n	new Float:Ret[3] = 0.0;n	Ret[0] = floatsub(floatmul(a[1], b[2]), floatmul(a[2], b[1]));n	Ret[1] = floatsub(floatmul(a[2], b[0]), floatmul(a[0], b[2]));n	Ret[2] = floatsub(floatmul(a[0], b[1]), floatmul(a[1], b[0]));n	return vectorProduct(Ret, up);n}nnnormalize(Float:Vec[3], Float:Ret[3], Float:multiplier)n{n	new Float:len = getVecLen(Vec);n	copyVec(Vec, Ret);n	new var1 = Ret;n	var1[0] = floatdiv(var1[0], len);n	new var2 = Ret[1];n	var2 = floatdiv(var2, len);n	new var3 = Ret[2];n	var3 = floatdiv(var3, len);n	new var4 = Ret;n	var4[0] = floatmul(var4[0], multiplier);n	new var5 = Ret[1];n	var5 = floatmul(var5, multiplier);n	new var6 = Ret[2];n	var6 = floatmul(var6, multiplier);n	return 0;n}nnrotateVectorZ(Float:Vec[3], Float:direction[3], Float:Ret[3])n{n	new Float:tmp[3] = 0.0;n	copyVec(Vec, tmp);n	tmp[2] = 0.0;n	new Float:dest_len = getVecLen(tmp);n	copyVec(direction, tmp);n	tmp[2] = 0.0;n	new Float:tmp2[3] = 0.0;n	normalize(tmp, tmp2, dest_len);n	tmp2[2] = Vec[2];n	copyVec(tmp2, Ret);n	return 0;n}nnFloat:vectorProduct(Float:Vec1[3], Float:Vec2[3])n{n	return floatadd(floatadd(floatmul(Vec1[0], Vec2[0]), floatmul(Vec1[1], Vec2[1])), floatmul(Vec1[2], Vec2[2]));n}nncopyVec(Float:Vec[3], Float:Ret[3])n{n	Ret[0] = Vec[0];n	Ret[1] = Vec[1];n	Ret[2] = Vec[2];n	return 0;n}nnsubVec(Float:Vec1[3], Float:Vec2[3], Float:Ret[3])n{n	Ret[0] = floatsub(Vec1[0], Vec2[0]);n	Ret[1] = floatsub(Vec1[1], Vec2[1]);n	Ret[2] = floatsub(Vec1[2], Vec2[2]);n	return 0;n}nnaddVec(Float:Vec1[3], Float:Vec2[3])n{n	new var1 = Vec1;n	var1[0] = floatadd(var1[0], Vec2[0]);n	new var2 = Vec1[1];n	var2 = floatadd(var2, Vec2[1]);n	new var3 = Vec1[2];n	var3 = floatadd(var3, Vec2[2]);n	return 0;n}nnmake_TE_BEAMPOINTS(id, Float:Vec1[3], Float:Vec2[3], width, brightness)n{n	message_begin(8, 23, 8672, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(brightness);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_BEAMENTPOINT(id, Float:target_origin[3], width, target_team)n{n	message_begin(8, 23, 8728, id);n	write_byte(1);n	write_short(id);n	write_coord(floatround(target_origin[0], AUTH));n	write_coord(floatround(target_origin[1], AUTH));n	write_coord(floatround(target_origin[2], AUTH));n	write_short(laser);n	write_byte(1);n	write_byte(1000);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	if (target_team == 1)n	{n		write_byte(50);n		write_byte(AUTH);n		write_byte(255);n	}n	elsen	{n		if (target_team == 2)n		{n			write_byte(255);n			write_byte(AUTH);n			write_byte(50);n		}n	}n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_AIMPOINTS(id, Float:Vec1[3], Float:Vec2[3])n{n	message_begin(8, 23, 8784, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(1);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nn

Decompiled source reconstructed

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

// Decompiled from dod_admin_spec_esp_836.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 String:AUTH[76] = "AMXX DoD Community";nnew String:PLUGIN_NAME[96] = "DoD Admin Spectator ESP";nnew String:VERSION[16] = "0.3";nnew bool:g_is_spectating[33];nnew bool:ducking[33];nnew g_esp_box[33];nnew g_esp_line[33];nnew g_esp_aim[33];nnew g_esp_info[33];nnew g_who_viewing[33];nnew laser;nnew weapons[38][32] =n{n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 66, 97, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 97, 118, 45, 75, 110, 105, 102, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		67, 111, 108, 116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		76, 117, 103, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 97, 114, 97, 110, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		84, 104, 111, 109, 112, 115, 111, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 84, 71, 45, 52, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 112, 114, 105, 110, 103, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 57, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 65, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 80, 45, 52, 48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 105, 110, 97, 112, 112, 108, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 97, 115, 104, 101, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		51, 48, 45, 67, 97, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 104, 111, 118, 101, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 71, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		71, 114, 101, 97, 115, 101, 103, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		75, 45, 52, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 116, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 114, 101, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		87, 101, 98, 108, 101, 121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		66, 97, 122, 111, 111, 107, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 97, 110, 122, 101, 114, 115, 99, 104, 114, 101, 99, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		80, 73, 65, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 70, 71, 45, 52, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 49, 45, 67, 97, 114, 98, 105, 110, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 99, 111, 112, 101, 100, 32, 69, 110, 102, 105, 101, 108, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		77, 105, 108, 108, 115, 32, 66, 111, 109, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	},n	{n		83, 121, 107, 101, 115, 32, 70, 97, 105, 114, 98, 97, 105, 114, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0n	}n};nFloat:operator*(Float:,_:)(Float:oper1, oper2)n{n	return floatmul(oper1, float(oper2));n}nnbool:operator>(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 < floatcmp(oper1, oper2);n}nnbool:operator>=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 <= floatcmp(oper1, oper2);n}nnbool:operator<(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 > floatcmp(oper1, oper2);n}nnbool:operator<(_:,Float:)(oper1, Float:oper2)n{n	return 0 > floatcmp(float(oper1), oper2);n}nnbool:operator<=(Float:,Float:)(Float:oper1, Float:oper2)n{n	return 0 >= floatcmp(oper1, oper2);n}nnIVecFVec(IVec[3], Float:FVec[3])n{n	FVec[0] = float(IVec[0]);n	FVec[1] = float(IVec[1]);n	FVec[2] = float(IVec[2]);n	return 1;n}nnget_user_button(id)n{n	return entity_get_int(id, 34);n}nnVelocityByAim(iIndex, iVelocity, Float:vRetValue[3])n{n	return velocity_by_aim(iIndex, iVelocity, vRetValue);n}nnpublic plugin_precache()n{n	laser = precache_model("sprites/zbeam4.spr");n	return 0;n}nnpublic plugin_init()n{n	register_plugin(PLUGIN_NAME, VERSION, AUTH);n	register_concmd("esp_start", "esp_start", 524288, "Starts the ESP For this User");n	register_concmd("esp_stop", "esp_stop", 524288, "Stops the ESP For this User");n	register_clcmd("esp_menu", "show_use_menu", 524288, "Shows admins ESP for Detecting Hackers");n	register_menucmd(register_menuid("yESP Menu:", AUTH), 1023, "esp_menu_cmd");n	register_event("TextMsg", "hook_spec_mode", "bd", "2&#Spec_Mode");n	register_event("StatusValue", "hook_statusvalue", 7208, {0});n	register_event("PTeam", "hook_team", 7284, "2=1", "2=2");n	register_cvar("esp_active", 7368, AUTH, AUTH);n	register_cvar("esp_repeat", "0.3", AUTH, AUTH);n	return 0;n}nnpublic client_PreThink(id)n{n	if (!is_user_connected(id))n	{n		return 0;n	}n	new button = get_user_button(id);n	if (button)n	{n		if (button & 4)n		{n			ducking[id] = 1;n		}n		elsen		{n			ducking[id] = 0;n		}n		return 0;n	}n	return 0;n}nnpublic esp_start(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new param[1];n	param[0] = id;n	set_task(get_cvar_float("esp_repeat"), "draw_esp", id + 263548, param, 1, 7560, AUTH);n	client_print(id, 4, "ESP Started");n	return 0;n}nnpublic esp_stop(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	remove_task(id + 263548, AUTH);n	client_print(id, 4, "ESP Stopped");n	return 0;n}nnpublic show_use_menu(id)n{n	new var1;n	if (!get_cvar_num("esp_active") || !get_user_flags(id, AUTH) & 524288)n	{n		return 1;n	}n	new szMenuBody[256];n	new len = format(szMenuBody, 255, "yESP Menu:n");n	len = format(szMenuBody[len], 255 - len, "nr1. wStart") + len;n	len = format(szMenuBody[len], 255 - len, "nr2. wStop") + len;n	new var2;n	if (g_esp_box[id])n	{n		var2 = 7992;n	}n	elsen	{n		var2 = 8004;n	}n	len = format(szMenuBody[len], 255 - len, "nr3. wDraw Box %s", var2) + len;n	new var3;n	if (g_esp_line[id])n	{n		var3 = 8104;n	}n	elsen	{n		var3 = 8116;n	}n	len = format(szMenuBody[len], 255 - len, "nr4. wDraw Line %s", var3) + len;n	new var4;n	if (g_esp_aim[id])n	{n		var4 = 8212;n	}n	elsen	{n		var4 = 8224;n	}n	len = format(szMenuBody[len], 255 - len, "nr5. wAim Info %s", var4) + len;n	new var5;n	if (g_esp_info[id])n	{n		var5 = 8324;n	}n	elsen	{n		var5 = 8336;n	}n	len = format(szMenuBody[len], 255 - len, "nr6. wDraw Info %s", var5) + len;n	len = format(szMenuBody[len], 255 - len, "nr0. wExit") + len;n	show_menu(id, 575, szMenuBody, -1, {0});n	return 1;n}nnpublic esp_menu_cmd(id, key)n{n	switch (key)n	{n		case 0:n		{n			client_cmd(id, "esp_start");n		}n		case 1:n		{n			client_cmd(id, "esp_stop");n		}n		case 2:n		{n			g_esp_box[id] = 1 - g_esp_box[id];n		}n		case 3:n		{n			g_esp_line[id] = 1 - g_esp_line[id];n		}n		case 4:n		{n			g_esp_aim[id] = 1 - g_esp_aim[id];n		}n		case 5:n		{n			g_esp_info[id] = 1 - g_esp_info[id];n		}n		case 9:n		{n			return 1;n		}n		default:n		{n		}n	}n	client_cmd(id, "esp_menu");n	return 1;n}nnpublic hook_spec_mode(id)n{n	new string[32];n	read_data(2, string, 31);n	new var1;n	if (equal(string, "#Spec_Mode2", AUTH) || equal(string, "#Spec_Mode4", AUTH))n	{n		g_is_spectating[id] = 1;n	}n	elsen	{n		g_is_spectating[id] = 0;n	}n	return 0;n}nnpublic hook_statusvalue(id)n{n	g_who_viewing[id] = entity_get_int(id, 4);n	return 0;n}nnpublic hook_team(id)n{n	g_is_spectating[id] = 0;n	remove_task(id + 263548, AUTH);n	return 0;n}nnpublic client_putinserver(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	g_who_viewing[id] = 0;n	return 0;n}nnpublic client_disconnect(id)n{n	g_is_spectating[id] = 0;n	g_esp_box[id] = 1;n	g_esp_line[id] = 1;n	g_esp_aim[id] = 1;n	g_esp_info[id] = 1;n	g_who_viewing[id] = 0;n	return 0;n}nnpublic draw_esp(param[])n{n	new id = param[0];n	new var1;n	if (!get_cvar_num("esp_active") || is_user_alive(id) || !get_user_flags(id, AUTH) & 524288 || !g_is_spectating[id])n	{n		return 0;n	}n	new who_watching = g_who_viewing[id];n	if (!is_user_connected(who_watching))n	{n		return 0;n	}n	new Float:viewed_origin[3] = 0.0;n	new players[32];n	new count;n	get_players(players, count, 8660, 8668);n	new x;n	while (x < count)n	{n		if (!is_user_connected(who_watching))n		{n			return 0;n		}n		entity_get_vector(who_watching, AUTH, viewed_origin);n		if (who_watching != players[x])n		{n			new target_team = get_user_team(players[x], {0}, AUTH);n			new Float:target_origin[3] = 0.0;n			entity_get_vector(players[x], AUTH, target_origin);n			new Float:distance = vector_distance(viewed_origin, target_origin);n			if (g_esp_line[id] == 1)n			{n				new width;n				if (distance < 2040.0)n				{n					width = 255 - floatround(floatdiv(distance, 1090519040), AUTH) / 3;n				}n				elsen				{n					width = 1;n				}n				make_TE_BEAMENTPOINT(id, target_origin, width, target_team);n			}n			new Float:v_middle[3] = 0.0;n			subVec(target_origin, viewed_origin, v_middle);n			if (g_esp_box[id] == 1)n			{n				new Float:v_hitpoint[3] = 0.0;n				trace_line(-1, viewed_origin, target_origin, v_hitpoint);n				new Float:distance_to_hitpoint = vector_distance(viewed_origin, v_hitpoint);n				new Float:scaled_bone_len = 0.0;n				new Float:scaled_bone_width = 0.0;n				if (ducking[players[x]])n				{n					scaled_bone_len = floatmul(floatdiv(distance_to_hitpoint, distance), floatsub(1112014848, 1099956224));n					scaled_bone_width = floatmul(floatdiv(distance_to_hitpoint, distance), floatadd(1125515264, 1084227584));n				}n				elsen				{n					scaled_bone_len = floatmul(1112014848, floatdiv(distance_to_hitpoint, distance));n					scaled_bone_width = floatmul(1125515264, floatdiv(distance_to_hitpoint, distance));n				}n				new Float:v_bone_start[3] = 0.0;n				new Float:v_bone_end[3] = 0.0;n				new Float:offset_vector[3] = 0.0;n				normalize(v_middle, offset_vector, floatsub(distance_to_hitpoint, 1092616192));n				new Float:eye_level[3] = 0.0;n				copyVec(viewed_origin, eye_level);n				if (ducking[players[x]])n				{n					new var2 = eye_level[2];n					var2 = floatadd(1095027917, var2);n				}n				elsen				{n					new var3 = eye_level[2];n					var3 = floatadd(1099694080, var3);n				}n				addVec(offset_vector, eye_level);n				copyVec(offset_vector, v_bone_start);n				copyVec(offset_vector, v_bone_end);n				new var4 = v_bone_end[2];n				var4 = floatsub(var4, scaled_bone_len);n				new Float:distance_target_hitpoint = floatsub(distance, distance_to_hitpoint);n				new actual_bright = 255;n				if (distance_target_hitpoint < 2040.0)n				{n					actual_bright = 255 - floatround(floatdiv(distance_target_hitpoint, 1094713344), AUTH);n				}n				elsen				{n					actual_bright = 85;n				}n				make_TE_BEAMPOINTS(id, v_bone_start, v_bone_end, floatround(scaled_bone_width, AUTH), actual_bright);n			}n			if (g_esp_info[id] == 1)n			{n				if (is_in_viewcone(who_watching, target_origin))n				{n					new Float:xp = 2.0;n					new Float:yp = 2.0;n					get_screen_pos(id, v_middle, xp, yp);n					draw_info(id, players[x], distance, xp, yp);n				}n			}n		}n		x++;n	}n	if (g_esp_aim[id] == 1)n	{n		new tmp[3];n		new Float:start[3] = 0.0;n		new Float:end[3] = 0.0;n		get_user_origin(who_watching, tmp, 1);n		IVecFVec(tmp, start);n		get_user_origin(who_watching, tmp, "");n		IVecFVec(tmp, end);n		make_TE_AIMPOINTS(id, start, end);n	}n	return 0;n}nnFloat:get_screen_pos(target_id, Float:v_me_to_target[3], &Float:xp, &Float:yp)n{n	new Float:v_aim[3] = 0.0;n	VelocityByAim(target_id, 1, v_aim);n	new Float:aim[3] = 0.0;n	copyVec(v_aim, aim);n	v_aim[2] = 0.0;n	new Float:v_target[3] = 0.0;n	copyVec(v_me_to_target, v_target);n	v_target[2] = 0.0;n	new Float:x_angle = 0.0;n	xp = get_screen_pos_x(v_target, v_aim, x_angle);n	yp = get_screen_pos_y(v_me_to_target, aim);n	return x_angle;n}nnFloat:get_screen_pos_x(Float:target[3], Float:aim[3], &Float:xangle)n{n	new Float:x_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:x_pos = 0.0;n	if (scalar_triple_product(aim, target) < 0)n	{n		x_angle *= -1;n	}n	new var1;n	if (x_angle >= -45.0 && x_angle <= 45.0)n	{n		x_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(x_angle, 1)), 1073741824));n		xangle = x_angle;n		return x_pos;n	}n	xangle = 0;n	return -2.0;n}nnFloat:get_screen_pos_y(Float:v_target[3], Float:aim[3])n{n	new Float:target[3] = 0.0;n	rotateVectorZ(v_target, aim, target);n	new Float:y_angle = floatacos(floatdiv(vectorProduct(aim, target), floatmul(getVecLen(aim), getVecLen(target))), 1);n	new Float:y_pos = 0.0;n	new Float:norm_target[3] = 0.0;n	new Float:norm_aim[3] = 0.0;n	normalize(v_target, norm_target, 1.0);n	normalize(aim, norm_aim, 1.0);n	if (norm_target[2] < norm_aim[2])n	{n		y_angle *= -1;n	}n	new var1;n	if (y_angle >= -45.0 && y_angle <= 45.0)n	{n		y_pos = floatsub(1065353216, floatdiv(floatadd(1065353216, floattan(y_angle, 1)), 1073741824));n		new var2;n		if (y_pos >= 0.0 && y_pos <= 1.0)n		{n			return y_pos;n		}n	}n	return -2.0;n}nndraw_info(id, target_id, Float:distance, Float:xp, Float:yp)n{n	new var1;n	if (xp > 0.0 && xp <= 1.0 && yp > 0.0 && yp <= 1.0)n	{n		set_hudmessage(255, 255, AUTH, floatabs(floatsub(xp, 1025758986)), floatabs(yp), AUTH, AUTH, get_cvar_float("esp_repeat"), 1036831949, 1045220557, 4);n		new name[33];n		get_user_name(target_id, name, 32);n		new health = get_user_health(target_id);n		new clip;n		new ammo;n		new weapon_id = dod_get_user_weapon(target_id, clip, ammo);n		new var2;n		if (weapon_id < 0 || weapon_id > 38)n		{n			weapon_id = 0;n		}n		show_hudmessage(id, "[%s]nHealth: %d Distance: %dn%snclip: %d ammo: %d", name, health, floatround(distance, AUTH), weapons[weapon_id], clip, ammo);n	}n	return 0;n}nnFloat:getVecLen(Float:Vec[3])n{n	new Float:VecNull[3] = 0.0;n	new Float:len = vector_distance(Vec, VecNull);n	return len;n}nnFloat:scalar_triple_product(Float:a[3], Float:b[3])n{n	new Float:up[3] = {0.0,0.0,4.6006E-41};n	new Float:Ret[3] = 0.0;n	Ret[0] = floatsub(floatmul(a[1], b[2]), floatmul(a[2], b[1]));n	Ret[1] = floatsub(floatmul(a[2], b[0]), floatmul(a[0], b[2]));n	Ret[2] = floatsub(floatmul(a[0], b[1]), floatmul(a[1], b[0]));n	return vectorProduct(Ret, up);n}nnnormalize(Float:Vec[3], Float:Ret[3], Float:multiplier)n{n	new Float:len = getVecLen(Vec);n	copyVec(Vec, Ret);n	new var1 = Ret;n	var1[0] = floatdiv(var1[0], len);n	new var2 = Ret[1];n	var2 = floatdiv(var2, len);n	new var3 = Ret[2];n	var3 = floatdiv(var3, len);n	new var4 = Ret;n	var4[0] = floatmul(var4[0], multiplier);n	new var5 = Ret[1];n	var5 = floatmul(var5, multiplier);n	new var6 = Ret[2];n	var6 = floatmul(var6, multiplier);n	return 0;n}nnrotateVectorZ(Float:Vec[3], Float:direction[3], Float:Ret[3])n{n	new Float:tmp[3] = 0.0;n	copyVec(Vec, tmp);n	tmp[2] = 0.0;n	new Float:dest_len = getVecLen(tmp);n	copyVec(direction, tmp);n	tmp[2] = 0.0;n	new Float:tmp2[3] = 0.0;n	normalize(tmp, tmp2, dest_len);n	tmp2[2] = Vec[2];n	copyVec(tmp2, Ret);n	return 0;n}nnFloat:vectorProduct(Float:Vec1[3], Float:Vec2[3])n{n	return floatadd(floatadd(floatmul(Vec1[0], Vec2[0]), floatmul(Vec1[1], Vec2[1])), floatmul(Vec1[2], Vec2[2]));n}nncopyVec(Float:Vec[3], Float:Ret[3])n{n	Ret[0] = Vec[0];n	Ret[1] = Vec[1];n	Ret[2] = Vec[2];n	return 0;n}nnsubVec(Float:Vec1[3], Float:Vec2[3], Float:Ret[3])n{n	Ret[0] = floatsub(Vec1[0], Vec2[0]);n	Ret[1] = floatsub(Vec1[1], Vec2[1]);n	Ret[2] = floatsub(Vec1[2], Vec2[2]);n	return 0;n}nnaddVec(Float:Vec1[3], Float:Vec2[3])n{n	new var1 = Vec1;n	var1[0] = floatadd(var1[0], Vec2[0]);n	new var2 = Vec1[1];n	var2 = floatadd(var2, Vec2[1]);n	new var3 = Vec1[2];n	var3 = floatadd(var3, Vec2[2]);n	return 0;n}nnmake_TE_BEAMPOINTS(id, Float:Vec1[3], Float:Vec2[3], width, brightness)n{n	message_begin(8, 23, 8932, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(brightness);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_BEAMENTPOINT(id, Float:target_origin[3], width, target_team)n{n	message_begin(8, 23, 8988, id);n	write_byte(1);n	write_short(id);n	write_coord(floatround(target_origin[0], AUTH));n	write_coord(floatround(target_origin[1], AUTH));n	write_coord(floatround(target_origin[2], AUTH));n	write_short(laser);n	write_byte(1);n	write_byte(1000);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(width);n	write_byte(AUTH);n	if (target_team == 1)n	{n		write_byte(50);n		write_byte(AUTH);n		write_byte(255);n	}n	elsen	{n		if (target_team == 2)n		{n			write_byte(255);n			write_byte(AUTH);n			write_byte(50);n		}n	}n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nnmake_TE_AIMPOINTS(id, Float:Vec1[3], Float:Vec2[3])n{n	message_begin(8, 23, 9044, id);n	write_byte(AUTH);n	write_coord(floatround(Vec1[0], AUTH));n	write_coord(floatround(Vec1[1], AUTH));n	write_coord(floatround(Vec1[2], AUTH));n	write_coord(floatround(Vec2[0], AUTH));n	write_coord(floatround(Vec2[1], AUTH));n	write_coord(floatround(Vec2[2], AUTH));n	write_short(laser);n	write_byte("");n	write_byte(AUTH);n	write_byte(floatround(floatmul(1092616192, get_cvar_float("esp_repeat")), AUTH));n	write_byte(1);n	write_byte(AUTH);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	write_byte(255);n	write_byte(AUTH);n	message_end();n	return 0;n}nn
DoD Plugins Archive · Repository · Old Forum Threads · Maps · Admin · built 14 Sep 2026 00:34 UTC