Raised This Month: $51 Target: $400
 12% 

[REQ]Some edits for AMX_shot_admin


  
 
 
Thread Tools Display Modes
Prev Previous Post   Next Post Next
Author Message
ajrjvjv
Junior Member
Join Date: Mar 2012
Old 03-29-2012 , 06:23   [REQ]Some edits for AMX_shot_admin
Reply With Quote #1

hello guy's here is the mod:

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

#define PLUGIN "Shot Administration"
#define VERSION "1.1"
#define AUTHOR "Nomexous"

/*

Version 1.0
 - Initial release.
 
Version 1.1
 - Small optimization with the menu.
 
 */

new settings[33] = { 0, ... }
new menu

new traceline_forward = -1, tracehull_forward = -1

new mode[] = {    0, // None
                  1, // Makes headshots (shooter)
	         2, // Reflects bullets back to shooter
                 3, // Gets headshot (victim)
                 4, // Bad aimer (shots randomly directed to left or right leg)
                 5, // Deals no damage (shots directed to HIT_SHIELD)
                 6, // Suicider
                 7  // Uber suicider
              }

#pragma unused mode // Gets rid of "symbol mode not used" warning.

new label[][] = { "None", // Yellow text if it's good, red if bad
		  "\yShooter",
		  "\yBullect reflector",
		  "\rVictim",
		  "\rBad Aim",
		  "\rNo Damage",
		  "\rSuicider",
		  "\rUber Suicider"
		}

public plugin_init()
{
	register_plugin(PLUGIN, VERSION, AUTHOR)
		
	register_clcmd("amx_shot_admin", "conjure_menu", ADMIN_SLAY, "Displays shot administration menu.")
}

public client_disconnect(id)
{
	settings[id] = 0
}

public set_forwards_registered(bool:condition)
{
	if (condition && traceline_forward == -1 && tracehull_forward == -1)
	{
		traceline_forward = register_forward(FM_TraceLine, "fw_traceline")
		tracehull_forward = register_forward(FM_TraceHull, "fw_tracehull", 1)
	}
	
	if (!condition && traceline_forward != -1 && tracehull_forward != -1)
	{
		unregister_forward(FM_TraceLine, traceline_forward)
		unregister_forward(FM_TraceHull, tracehull_forward, 1)
		
		traceline_forward = -1
		tracehull_forward = -1	
	}
	return PLUGIN_HANDLED
}

public conjure_menu(id, level, cid)
{
	if (cmd_access(id, level, cid, 1))
	{
		build_menu(id)
	}
	return PLUGIN_HANDLED
}

// For some reason, they don't allow default argument items in public functions.
stock build_menu(id, page = 0)
{
	menu = menu_create("Shot Administration Menu", "menu_handler")
	
	static players[32], num, name[32], cmd[5], itemtxt[60]
	
	get_players(players, num)
	for (new i; i < num; i++)
	{
		get_user_name(players[i], name, 31)
		
		formatex(cmd, 4, "%i", players[i])
		formatex(itemtxt, 59, "%s: %s", name, label[settings[players[i]]])
		
		menu_additem(menu, itemtxt, cmd)
	}
	
	menu_display(id, menu, page)
	return PLUGIN_CONTINUE
}

public menu_handler(id, menu, item)
{
	if (item < 0)
	{
		for (new i; i < 33; i++)
		{
			if (settings[i] != 0)
			{
				set_forwards_registered(true)
				return PLUGIN_HANDLED
			}
		}
		
		set_forwards_registered(false)
		return PLUGIN_HANDLED
	}
	
	static cmd[5], callback, access, pid
	menu_item_getinfo(menu, item, access, cmd, 4, _, _, callback)
	
	pid = str_to_num(cmd)
	
	if (is_user_connected(pid))
	{
		settings[pid] = ++settings[pid] % (sizeof mode)
	}
	
	menu_destroy(menu)
		
	build_menu(id, item / 7)
	return PLUGIN_HANDLED
}

public fw_traceline(Float:start[3], Float:end[3], conditions, id, ptr)
{
	return process_trace(id, ptr)
}

public fw_tracehull(Float:start[3], Float:end[3], conditions, hull, id, ptr)
{
	return process_trace(id, ptr)
}

public process_trace(id, ptr)
{
	if (!is_user_alive(id)) return FMRES_IGNORED
	new target = get_tr2(ptr, TR_pHit)
	
	switch (settings[id])
	{
		// Shooter (headshots galore) mode. See how many kills you can get before people notice...
		case 1:
		{
			if (!is_user_alive(target)) return FMRES_IGNORED
			
			new Float:origin[3], Float:angles[3]
			engfunc(EngFunc_GetBonePosition, target, 8, origin, angles)
			set_tr2(ptr, TR_vecEndPos, origin)
			// Why get bone origin? Well, CS will draw the blood spray from the headshot where ever your bullet was supposed to
			// land, as defined by the end[3] coordinates passed to the forward. So that meant shooting a person in the foot with the
			// shot being redirected to the head would produce a blood spray coming out of the foot. This made it a little harder
			// to hide the fact that you were 'cheating.' So, we just reset end[3] to the coordinates of the head bone of whomever
			// we're shooting, and we're in business!
			set_tr2(ptr, TR_iHitgroup, HIT_HEAD)
		}
		
		// Bad aiming. It doesn't help much. Usually it only takes 1 more hit than normal to kill. But they can't headshot, no matter
		// how hard they try.
		case 4:
		{
			if (!is_user_alive(target)) return FMRES_IGNORED
			set_tr2(ptr, TR_iHitgroup, random_num(HIT_LEFTLEG, HIT_RIGHTLEG))
			return FMRES_IGNORED
		}
		
		// Redirects hitgroup to HIT_SHIELD. This might be annoying to the person who gets shot, but it won't hurt them. Might throw
		// off their aim. I was going to use set_tr2(ptr, TR_flFraction, 100.0) but it does something weird with shotguns. Instead of
		// dealing no damage, shotguns actually give the target a gigantic boost in health! I couldn't figure it out, so I just left
		// it as this.
		case 5:
		{
			if (!is_user_alive(target)) return FMRES_IGNORED
			set_tr2(ptr, TR_iHitgroup, 8)
		}
		
		// A hit on the enemy is redirected onto the shooter. Pretty simple.
		case 6:
		{
			if (is_user_alive(target) && cs_get_user_team(target) != cs_get_user_team(id))
			{
				set_tr2(ptr, TR_pHit, id)
			}
		}
		
		// A hit anywhere (teammate, wall, or enemy) is redirected onto the shooter's head.
		case 7:
		{
			set_tr2(ptr, TR_pHit, id)
			set_tr2(ptr, TR_iHitgroup, HIT_HEAD)
			return FMRES_IGNORED
		}
	}
	
	// Person gets shot anywhere, it's turned into a headshot.
	if (is_user_alive(target) && settings[target] == 3)
	{
		set_tr2(ptr, TR_iHitgroup, HIT_HEAD)
	}
	
	// Shot is reflected to shooter. Giving this to someone makes them immune to guns.
	if (is_user_alive(target) && settings[target] == 2)
	{
		set_tr2(ptr, TR_pHit, id)
	}
	
	return FMRES_IGNORED
}
If u can remove all other functions please - and make only
1.None
2.Shooter

and more 1 request please
if u can change that when i hit in the legs or hands it wont be headshot
only when i hit chest , neck and head (ofcurse ;P) please.

thanks :S

Last edited by ajrjvjv; 03-29-2012 at 06:26.
ajrjvjv is offline
 



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

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

Forum Jump


All times are GMT -4. The time now is 11:01.


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