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

[TF2] Advanced Infinite Ammo


Post New Thread Reply   
 
Thread Tools Display Modes
Nekimoto
Junior Member
Join Date: May 2012
Old 09-15-2012 , 13:08   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #101

you need a cvar to remove the sandman and wrap assassin balls.
Nekimoto is offline
Horsedick
AlliedModders Donor
Join Date: Sep 2011
Old 09-15-2012 , 14:43   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #102

Quote:
Originally Posted by Nekimoto View Post
you need a cvar to remove the sandman and wrap assassin balls.
no ...there is already an option there

I believe line 417 just adjust that by removing the // in front of if(!ChechCommandAccess etc etc

Last edited by Horsedick; 09-15-2012 at 14:44.
Horsedick is offline
ReFlexPoison
☠☠☠
Join Date: Jul 2011
Location: ☠☠☠
Old 09-16-2012 , 00:39   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #103

This probably has been raised before, but I'd suggest you add a cvar to enable/disable infinite clips since you use separate stocks in the plugin. I think it would give a larger variety of capabilities if you do, but atm I'm just commenting out the stock. Just an idea.
ReFlexPoison is offline
FlaminSarge
Veteran Member
Join Date: Jul 2010
Old 09-18-2012 , 00:38   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #104

I second that, a cvar for what kind of infinite ammo to use. 1 = infinite clip, 2 = infinite reserve, 3 = both. Then you can check GetConVarInt(cvar) & 1, or & 2
__________________
Bread EOTL GunMettle Invasion Jungle Inferno will break everything. Don't even ask.

All plugins: Randomizer/GiveWeapon, ModelManager, etc.
Post in plugin threads with questions.
Steam is for playing games.
You will be fed to javalia otherwise.
Psyduck likes replays.
FlaminSarge is offline
hobart
Member
Join Date: Dec 2011
Old 10-06-2012 , 23:08   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #105

Quote:
Originally Posted by Nekimoto View Post
you need a cvar to remove the sandman and wrap assassin balls.
I agree completely, if you're going to take the time to write an updated version of an old plugin and then link to it from the old thread it should at least have all the same convars as the old one. I tried adding a convar to you .sp and compiling it and it compiled and i can even get it to call back in the rcon/console yet it doesnt actually set it to admin only or disable it, if someone could go over my additions and see what i missed that would be great! (i am hardware man not software man)

Code:
#pragma semicolon 1

#include <sdktools>
#include <tf2_stocks>
#include <sdkhooks>

#define PLUGIN_VERSION "1.1.2"


public Plugin:myinfo = 
{
	
	name = "Advanced Infinite Ammo",
	
	author = "Tylerst",

	description = "Infinite usage for just about everything",

	version = PLUGIN_VERSION,
	
}

public APLRes:AskPluginLoad2(Handle:myself, bool:late, String:error[], err_max)
{
	new String:Game[32];
	GetGameFolderName(Game, sizeof(Game));
	if(!StrEqual(Game, "tf"))
	{
		Format(error, err_max, "This plugin only works for Team Fortress 2");
		return APLRes_Failure;
	}
	return APLRes_Success;
}

new bool:g_bInfiniteAmmo[MAXPLAYERS+1] = false;
new g_iClientWeapons[MAXPLAYERS+1][3];
new bool:g_bInfiniteAmmoToggle = false;
new bool:g_bWaitingForPlayers;

new Handle:g_hAllInfiniteAmmo = INVALID_HANDLE;
new Handle:g_hBatAmmo = INVALID_HANDLE;
new Handle:g_hRoundWin = INVALID_HANDLE;
new Handle:g_hWaitingForPlayers = INVALID_HANDLE;
new Handle:g_hAdminOnly = INVALID_HANDLE;
new Handle:g_hBots = INVALID_HANDLE;
new Handle:g_hChat = INVALID_HANDLE;
new Handle:g_hLog = INVALID_HANDLE;

public OnPluginStart()
{
	CreateConVar("sm_aia_version", PLUGIN_VERSION, "Advanced Infinite Ammo", FCVAR_PLUGIN|FCVAR_SPONLY|FCVAR_REPLICATED|FCVAR_NOTIFY);
	LoadTranslations("common.phrases");

	g_hAllInfiniteAmmo = CreateConVar("sm_aia_all", "0", "Advanced Infinite Ammo for everyone");
	g_hBatAmmo = CreateConVar("sm_aia_batammo", "2", "AdminOnly/All/Disable '2/1/0' infinite sandman/wrap assassin balls");
	g_hAdminOnly = CreateConVar("sm_aia_adminonly", "0", "Advanced Infinite Ammo will work for admins only");
	g_hBots = CreateConVar("sm_aia_bots", "1", "Advanced Infinite Ammo will work for bots");
	g_hRoundWin = CreateConVar("sm_aia_roundwin", "1", "Advanced Infinite Ammo for everyone on round win");
	g_hWaitingForPlayers = CreateConVar("sm_aia_waitingforplayers", "1", "Advanced Infinite Ammo for everyone during waiting for players phase");
	g_hChat = CreateConVar("sm_aia_chat", "1", "Show Advanced Infinite Ammo changes in chat");
	g_hLog = CreateConVar("sm_aia_log", "1", "Log Advanced Infinite Ammo commands");

	HookConVarChange(g_hAllInfiniteAmmo, CvarChange_AllInfiniteAmmo);
	HookConVarChange(g_hBatAmmo, ResetBalls);
	HookConVarChange(g_hAdminOnly, CvarChange_AdminOnly);
	HookConVarChange(g_hBots, CvarChange_Bots);

	RegAdminCmd("sm_aia", Command_SetAIA, ADMFLAG_SLAY, "Give Advanced Infinite Ammo to the target(s) - Usage: sm_aia \"target\" \"1/0\"");
	RegAdminCmd("sm_aia2", Command_SetAIATimed, ADMFLAG_SLAY, "Give Advanced Infinite Ammo to the target(s) for a limited time - Usage: sm_aia2 \"target\" \"time(in seconds)\"");
	RegAdminCmd("sm_advanced_infinite_ammo", Command_SetAIA, ADMFLAG_SLAY, "Give Advanced Infinite Ammo to the target(s) - Usage: sm_advanced_infinite_ammo \"target\" \"1/0\"");
	RegAdminCmd("sm_advanced_infinite_ammo_timed", Command_SetAIATimed, ADMFLAG_SLAY, "Give Advanced Infinite Ammo to the target(s) for a limited time - Usage: sm_advanced_infinite_ammo_timed \"target\" \"time(in seconds)\"");

	HookEvent("teamplay_round_start", Event_RoundStart);
	HookEvent("teamplay_round_win", Event_RoundEnd);
	HookEvent("arena_round_start", Event_ArenaRoundStart);
	HookEvent("mvm_begin_wave", Event_MVMWaveStart);


	for(new client = 1; client <= MaxClients; client++)
	{
		if(IsValidClient(client, false)) 
		{
			SDKHook(client, SDKHook_PreThink, SDKHook_OnPreThink);
			SDKHook(client, SDKHook_WeaponEquipPost, SDKHook_OnWeaponEquipPost);
		}
	}
}

public CvarChange_AllInfiniteAmmo(Handle:Cvar, const String:strOldValue[], const String:strNewValue[])
{
	new iOldValue = StringToInt(strOldValue);
	new iNewValue = StringToInt(strNewValue);

	if(iNewValue && !iOldValue)
	{
		if(GetConVarBool(g_hChat))
		{
			if(GetConVarBool(g_hAdminOnly)) PrintToChatAll("[SM] Advanced Infinite Ammo for admins enabled");
			else PrintToChatAll("[SM] Advanced Infinite Ammo For Everyone Enabled");
		}
		for(new client = 1; client <= MaxClients; client++)

		{
			g_bInfiniteAmmo[client] = true;
		}
	}
	if(!iNewValue && iOldValue)
	{
		if(GetConVarBool(g_hChat)) PrintToChatAll("[SM] Advanced Infinite Ammo for everyone disabled");
		for(new client = 1; client <= MaxClients; client++)

		{
			g_bInfiniteAmmo[client] = false;
			ResetAmmo(client);
		}
	}
}

public ResetBalls(Handle:convar, const String:oldValue[], const String:newValue[])
{
	new oldint = StringToInt(oldValue);
	new newint = StringToInt(newValue);
	if ((newint == 0 && oldint != 0) || (newint == 2 && oldint == 1))

	{	
		for (new i=1;i<=MaxClients;i++)

		{
			if(g_bInfiniteAmmo[i])
			{
				if(IsClientInGame(i) && IsPlayerAlive(i))
				{
					new health = GetClientHealth(i);
					TF2_RegeneratePlayer(i);
					SetEntityHealth(i, health);
				}
			}
		}
	}
}

public CvarChange_AdminOnly(Handle:Cvar, const String:strOldValue[], const String:strNewValue[])
{
	new iOldValue = StringToInt(strOldValue);
	new iNewValue = StringToInt(strNewValue);

	if(iNewValue && !iOldValue)
	{
		for(new client = 1; client <= MaxClients; client++)

		{
			ResetAmmo(client);
		}
	}
}


public CvarChange_Bots(Handle:Cvar, const String:strOldValue[], const String:strNewValue[])
{
	new iOldValue = StringToInt(strOldValue);
	new iNewValue = StringToInt(strNewValue);

	if(iNewValue && !iOldValue)
	{
		for(new client = 1; client <= MaxClients; client++)

		{
			ResetAmmo(client);
		}
	}
}

public OnClientPutInServer(client)
{
	GetConVarBool(g_hAllInfiniteAmmo) ? (g_bInfiniteAmmo[client] = true) : (g_bInfiniteAmmo[client] = false);
	if(IsValidClient(client, false)) 
	{
		SDKHook(client, SDKHook_PreThink, SDKHook_OnPreThink);
		SDKHook(client, SDKHook_WeaponEquipPost, SDKHook_OnWeaponEquipPost);
	}
}

public TF2_OnWaitingForPlayersStart()
{
	g_bWaitingForPlayers = true;
	if(!GetConVarBool(g_hAllInfiniteAmmo) && GetConVarBool(g_hWaitingForPlayers))
	{
		g_bInfiniteAmmoToggle = true;
		if(GetConVarBool(g_hChat)) PrintToChatAll("[SM] Waiting For Players Started - Advanced Infinite Ammo enabled");
	}	
}

public TF2_OnWaitingForPlayersEnd()
{
	g_bWaitingForPlayers = false;
}

public Event_RoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{	
	if(g_bInfiniteAmmoToggle && !g_bWaitingForPlayers)
	{
		g_bInfiniteAmmoToggle = false;
		if(GetConVarBool(g_hChat)) PrintToChatAll("[SM] Round Start - Advanced Infinite Ammo disabled");
	}
}

public Event_MVMWaveStart(Handle:event, const String:name[], bool:dontBroadcast)
{	
	if(g_bInfiniteAmmoToggle && !g_bWaitingForPlayers)
	{
		g_bInfiniteAmmoToggle = false;
		if(GetConVarBool(g_hChat)) PrintToChatAll("[SM] Round Start - Advanced Infinite Ammo disabled");
		for(new client = 1; client <= MaxClients; client++)

		{
			ResetAmmo(client);
		}
	}
}

public Event_RoundEnd(Handle:event, const String:name[], bool:dontBroadcast)
{
	if(!GetConVarBool(g_hAllInfiniteAmmo) && GetConVarBool(g_hRoundWin))
	{
		g_bInfiniteAmmoToggle = true;	
		if(GetConVarBool(g_hChat)) PrintToChatAll("[SM] Round Win - Advanced Infinite Ammo enabled");
	}
}

public Event_ArenaRoundStart(Handle:event, const String:name[], bool:dontBroadcast)
{	
	if(g_bInfiniteAmmoToggle && !g_bWaitingForPlayers)
	{
		g_bInfiniteAmmoToggle = false;
		if(GetConVarBool(g_hChat)) PrintToChatAll("[SM] Round Start - Advanced Infinite Ammo disabled");
	}
}

public Action:Command_SetAIA(client, args)
{
	switch(args)
	{
		case 0:
		{
			if(g_bInfiniteAmmo[client])
			{
				g_bInfiniteAmmo[client] = false;
				ResetAmmo(client);
				if(GetConVarBool(g_hLog)) LogAction(client, client, "\"%L\" Disabled Advanced Infinite Ammo for  \"%L\"", client, client);		
				if(GetConVarBool(g_hChat)) ShowActivity2(client, "[SM] ","Advanced Infinite Ammo for %N disabled", client);
				
			}
			else
			{
				g_bInfiniteAmmo[client] = true;
				if(GetConVarBool(g_hLog)) LogAction(client, client, "\"%L\" Enabled Advanced Infinite Ammo for  \"%L\"", client, client);
				if(GetConVarBool(g_hChat)) ShowActivity2(client, "[SM] ","Advanced Infinite Ammo for %N enabled", client);
			}			
		}
		case 2:
		{
			new String:strTarget[MAX_TARGET_LENGTH], String:strOnOff[2], bool:bOnOff, String:target_name[MAX_TARGET_LENGTH],target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
			GetCmdArg(1, strTarget, sizeof(strTarget));
			if((target_count = ProcessTargetString(strTarget, client, target_list, MAXPLAYERS, COMMAND_FILTER_CONNECTED, target_name, sizeof(target_name), tn_is_ml)) <= 0)
			{
				ReplyToTargetError(client, target_count);
				return Plugin_Handled;
			}

			if((target_count > 1 || target_list[0] != client) && !CheckCommandAccess(client, "sm_aia_targetflag", ADMFLAG_SLAY))
			{
				ReplyToCommand(client, "[SM] You do not have access to targeting others");
				return Plugin_Handled;
			}

			GetCmdArg(2, strOnOff, sizeof(strOnOff));
			bOnOff = bool:StringToInt(strOnOff);
			
			if(bOnOff)
			{
				for(new i = 0; i < target_count; i++)
				{
					g_bInfiniteAmmo[target_list[i]] = true;
					if(GetConVarBool(g_hLog)) LogAction(client, target_list[i], "\"%L\" enabled Advanced Infinite Ammo for  \"%L\"", client, target_list[i]);
				}
				if(GetConVarBool(g_hChat)) ShowActivity2(client, "[SM] ","Advanced Infinite Ammo for %s enabled", target_name);
			}
			else 
			{
				for(new i = 0; i < target_count; i++)
				{
					g_bInfiniteAmmo[target_list[i]] = false;
					ResetAmmo(target_list[i]);
					if(GetConVarBool(g_hLog)) LogAction(client, target_list[i], "\"%L\" disabled Advanced Infinite Ammo for  \"%L\"", client, target_list[i]);
				}
				if(GetConVarBool(g_hChat)) ShowActivity2(client, "[SM] ","Advanced Infinite Ammo for %s disabled", target_name);				
			}
		}
		default:
		{
			ReplyToCommand(client, "[SM] Usage: sm_aia \"target\" \"1/0\"");
		}
	}

	return Plugin_Handled;
}

public Action:Command_SetAIATimed(client, args)
{
	if(args != 2)
	{
		ReplyToCommand(client, "[SM] Usage: sm_aia2 \"target\" \"time(in seconds)\"");
		return Plugin_Handled;
	}

	new String:strTarget[MAX_TARGET_LENGTH], String:strTime[8], Float:time, String:target_name[MAX_TARGET_LENGTH],target_list[MAXPLAYERS], target_count, bool:tn_is_ml;
	GetCmdArg(1, strTarget, sizeof(strTarget));
	if((target_count = ProcessTargetString(strTarget, client, target_list, MAXPLAYERS, COMMAND_FILTER_CONNECTED, target_name, sizeof(target_name), tn_is_ml)) <= 0)
	{
		ReplyToTargetError(client, target_count);
		return Plugin_Handled;
	}

	if((target_count > 1 || target_list[0] != client) && !CheckCommandAccess(client, "sm_aia_targetflag", ADMFLAG_SLAY))
	{
		ReplyToCommand(client, "[SM] You do not have access to targeting others");
		return Plugin_Handled;
	}

	GetCmdArg(2, strTime, sizeof(strTime));
	time = StringToFloat(strTime);

	for(new i=0;i<target_count;i++)
	{
		g_bInfiniteAmmo[target_list[i]] = true;
		CreateTimer(time, Timer_RemoveAIA, target_list[i], TIMER_FLAG_NO_MAPCHANGE);
		if(GetConVarBool(g_hLog)) LogAction(client, target_list[i], "\"%L\" Advanced Infinite Ammo enabled for \"%L\" for %f Seconds", client, target_list[i], time); 
	}
	if(GetConVarBool(g_hChat)) ShowActivity2(client, "[SM] ","Advanced Infinite Ammo enabled for %s for %-.2f seconds", target_name, time);

	return Plugin_Handled;	
}

public Action:Timer_RemoveAIA(Handle:timer, any:client)
{
	g_bInfiniteAmmo[client] = false;
	ResetAmmo(client);
}

public SDKHook_OnWeaponEquipPost(client, weapon)
{
	if(IsValidClient(client))
	{
		g_iClientWeapons[client][0] = GetPlayerWeaponSlot(client, TFWeaponSlot_Primary);
		g_iClientWeapons[client][1] = GetPlayerWeaponSlot(client, TFWeaponSlot_Secondary);
		g_iClientWeapons[client][2] = GetPlayerWeaponSlot(client, TFWeaponSlot_Melee);
	}
}

public SDKHook_OnPreThink(client)
{
	if(IsValidClient(client) && CheckInfiniteAmmoAccess(client))
	{
		if(IsValidWeapon(g_iClientWeapons[client][0])) GiveInfiniteAmmo(client, g_iClientWeapons[client][0]);
		if(IsValidWeapon(g_iClientWeapons[client][1])) GiveInfiniteAmmo(client, g_iClientWeapons[client][1]);
		if(IsValidWeapon(g_iClientWeapons[client][2])) GiveInfiniteAmmo(client, g_iClientWeapons[client][2]);

		SetSentryAmmo(client);
		SetMetal(client);
		SetCloak(client);
	}
}

bool:CheckInfiniteAmmoAccess(client)
{
	if(GetConVarBool(g_hAdminOnly) && !CheckCommandAccess(client, "sm_aia_adminflag", ADMFLAG_GENERIC)) return false;
	if(g_bInfiniteAmmo[client] || g_bInfiniteAmmoToggle) return true;
	return false;
}

bool:IsValidClient(client, bool:bCheckAlive=true)
{
	if(client < 1 || client > MaxClients) return false;
	if(!IsClientInGame(client)) return false;
	if(IsClientSourceTV(client) || IsClientReplay(client)) return false;
	if(!GetConVarBool(g_hBots) && IsFakeClient(client)) return false;
	if(bCheckAlive) return IsPlayerAlive(client);
	return true;
}

bool:IsValidWeapon(iEntity)
{
	decl String:strClassname[128];
	if(IsValidEntity(iEntity) && GetEntityClassname(iEntity, strClassname, sizeof(strClassname)) && StrContains(strClassname, "tf_weapon", false) != -1) return true;
	return false;
}

GiveInfiniteAmmo(client, iWeapon)
{
	switch(GetEntProp(iWeapon, Prop_Send, "m_iItemDefinitionIndex"))
	{
		//Melee Weapons or exceptions - Do nothing
		case 0,1,2,3,4,5,6,7,8,25,26,27,28,30,37,38,43,59,60,128,131,133,140,
			142,153,154,155.169,171,172,173,190,191,192,193,194,195,196,
			197,198,212,214,221,225,232,239,264,297,304,310,317,325,326,
			327,329,331,348,349,355,356,357,401,404,413,416,423,426,447,
			450,452,457,461,466,474,527,528,572,574,587,589,593,609,638,
			656,660,662,665,727,735,736,737,739,775,810,813,831,834: {}

		//Type 1 Weapons - Only Clip
		case 9,10,11,12,13,16,17,18,19,20,22,23,24,36,45,61,127,130,160,161,
			199,200,203,204,205,206,207,209,210,220,222,224,228,237,265,
			294,305,308,412,414,415,425,449,460,513,658,661,669,773:
		{
			SetClip(iWeapon);
		}

		//Type 2 Weapons - Only Ammo
		case 14,15,39,41,42,56,58,159,201,202,230,298,311,312,351,
			424,433,526,664,740,811,812,832,833:
		{
			SetAmmo(client, iWeapon);
		}

		//Flamethrower(Normal, Upgradeable, & Festive), Backburner, Degreaser - Ammo and Clip(AirBlast Ammo)
		case 21,40,208,215,659,741:
		{
			SetAmmo(client, iWeapon);
			SetClip(iWeapon);	
		}

		//Eyelander, HHHH, Nine Iron - Decapitations
		case 132,266,482:
		{
			SetDecapitations(client);
		}

		//Ullapool Caber - Detonation Reset
		case 307:
		{
			ResetCaber(iWeapon);					
		}

		//Bazaar Bargain - Ammo and Decapitations
		case 402:
		{
			SetAmmo(client, iWeapon);
			SetDecapitations(client);
		}

		//Cow Mangler, Bison, Pomson - Energy Ammo
		case 441,442,588:
		{
			SetEnergyAmmo(iWeapon);
		}

		//Soda Popper and Baby Face's Blaster - Clip and Hype Meter
		case 448,772:
		{
			SetClip(iWeapon);
			SetHypeMeter(client);
		}

		//Phlogistinator, Hitman's Heatmaker - Ammo and Rage
		case 594,752: 
		{
			SetAmmo(client, iWeapon);
			SetRageMeter(client);
		}

		//Manmelter - Only Revenge Crits
		case 595:
		{
			SetRevengeCrits(client);
		}

		//Spycicle - Recharge Time
		case 649:
		{
			SetEntPropFloat(iWeapon, Prop_Send, "m_flKnifeRegenerateDuration", 0.0);
		}

		//Cleaner's Carbine - Clip and Crits
		case 751:
		{
			SetClip(iWeapon);
			TF2_AddCondition(client, TFCond_CritOnKill, 3.0);			
		}

		//Everything Else(Usually new weapons added to TF2 since last plugin update)
		default:
		{
			SetClip(iWeapon, 95);
			SetAmmo(client, iWeapon, 95);
		}
	}
	
}

public TF2_OnConditionRemoved(client, TFCond:condition)
{
	if(CheckInfiniteAmmoAccess(client))
	{
		switch(condition)
		{
			case TFCond_Charging:
			{
				SetChargeMeter(client);
			}
		}
	}
}

ResetAmmo(client)
{
	if(IsValidClient(client))
	{		
		SetRevengeCrits(client, 0);
		SetDecapitations(client, 0);
		new iClientHealth = GetClientHealth(client);
		TF2_RegeneratePlayer(client);
		SetEntityHealth(client, iClientHealth);
	}
}

stock SetAmmo(client, iWeapon, iAmmo = 999)
{
	new iAmmoType = GetEntProp(iWeapon, Prop_Send, "m_iPrimaryAmmoType");
	if(iAmmoType != -1) SetEntProp(client, Prop_Data, "m_iAmmo", iAmmo, _, iAmmoType);
}

stock SetEnergyAmmo(iWeapon, Float:flEnergyAmmo = 100.0)
{
	SetEntPropFloat(iWeapon, Prop_Send, "m_flEnergy", flEnergyAmmo);
}

stock SetClip(iWeapon, iClip = 99)
{
	SetEntProp(iWeapon, Prop_Data, "m_iClip1", iClip);

}

stock SetDrinkMeter(client, Float:flDrinkMeter = 0.0)
{
	SetEntPropFloat(client, Prop_Send, "m_flEnergyDrinkMeter", flDrinkMeter);
}

stock SetHypeMeter(client, Float:flHypeMeter = 0.0)
{
	SetEntPropFloat(client, Prop_Send, "m_flHypeMeter", flHypeMeter);
}

stock SetRageMeter(client, Float:flRage = 0.0)
{
	if(!GetEntPropFloat(client, Prop_Send, "m_flRageMeter"))
	{

		SetEntPropFloat(client, Prop_Send, "m_flRageMeter", flRage);
	}	
}

stock SetUberCharge(iWeapon, Float:flUberCharge = 0.00)
{
	if(!GetEntPropFloat(iWeapon, Prop_Send, "m_flChargeLevel"))
	{
		SetEntPropFloat(iWeapon, Prop_Send, "m_flChargeLevel", flUberCharge);
	}
}

stock SetChargeMeter(client, Float:flChargeMeter = 0.0)
{
	SetEntPropFloat(client, Prop_Send, "m_flChargeMeter", flChargeMeter);
}

stock SetRevengeCrits(client, iAmount = 0)
{
	SetEntProp(client, Prop_Send, "m_iRevengeCrits", iAmount);
}

stock SetDecapitations(client, iAmount = 99)
{
	SetEntProp(client, Prop_Send, "m_iDecapitations", iAmount);
}

stock ResetCaber(iWeapon)
{
	SetEntProp(iWeapon, Prop_Send, "m_bBroken", 0);

	SetEntProp(iWeapon, Prop_Send, "m_iDetonated", 0);
}

stock SetSentryAmmo(client, iLevel1 = 150, iLevel2 = 200, iLevel3 = 200, iLevel3Rockets = 20)
{
	new iSentrygun = -1; 
	while ((iSentrygun = FindEntityByClassname(iSentrygun, "obj_sentrygun"))!=INVALID_ENT_REFERENCE)
	{
		if(IsValidEntity(iSentrygun))
		{
			if(GetEntPropEnt(iSentrygun, Prop_Send, "m_hBuilder") == client)
			{
				switch (GetEntProp(iSentrygun, Prop_Send, "m_iUpgradeLevel"))
				{
					case 1:
					{
						SetEntProp(iSentrygun, Prop_Send, "m_iAmmoShells", iLevel1);
					}
					case 2:
					{
						SetEntProp(iSentrygun, Prop_Send, "m_iAmmoShells", iLevel2);
					}
					case 3:
					{
						SetEntProp(iSentrygun, Prop_Send, "m_iAmmoShells", iLevel3);
						SetEntProp(iSentrygun, Prop_Send, "m_iAmmoRockets", iLevel3Rockets);
					}
				}
			}
		}
	}
}

stock SetMetal(client, iMetal = 200)
{
	SetEntProp(client, Prop_Data, "m_iAmmo", iMetal, _, 3);
}

stock SetCloak(client, Float:flCloak = 100.0)
{
	SetEntPropFloat(client, Prop_Send, "m_flCloakMeter", flCloak);	
}
hobart is offline
11530
Veteran Member
Join Date: Sep 2011
Location: Underworld
Old 10-16-2012 , 00:49   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #106

@Tylerst, Is it intentional that sm_aia (and similar commands) on a non-admin won't work if sm_aia_adminonly is set to 1? If anything, I'd feel like /aia should work on anyone regardless of what the cvars say, since they only really apply to automatic ammo addition. If this was not your intent, may I request the script to be altered to reflect this please? Thank you.
__________________

Last edited by 11530; 10-16-2012 at 01:06.
11530 is offline
ReFlexPoison
☠☠☠
Join Date: Jul 2011
Location: ☠☠☠
Old 10-16-2012 , 01:43   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #107

Quote:
Originally Posted by 11530 View Post
@Tylerst, Is it intentional that sm_aia (and similar commands) on a non-admin won't work if sm_aia_adminonly is set to 1? If anything, I'd feel like /aia should work on anyone regardless of what the cvars say, since they only really apply to automatic ammo addition. If this was not your intent, may I request the script to be altered to reflect this please? Thank you.
Seems he hasn't been on for a good month. I'll probably end up using the older one, don't know why but seemed simpler.
ReFlexPoison is offline
botinok
Junior Member
Join Date: Mar 2009
Old 10-30-2012 , 12:49   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #108

this plugin is not work now?
botinok is offline
blablubde
Member
Join Date: Sep 2010
Old 10-30-2012 , 13:14   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #109

i've installed it on my server, right after the update it wasnt really working.

but then my server crashed (dono why) and now it works like before the update. no problems.
blablubde is offline
Mr. Man
Veteran Member
Join Date: Mar 2011
Location: Huh?
Old 10-30-2012 , 15:10   Re: [TF2] Advanced Infinite Ammo
Reply With Quote #110

I really wish there were flags for controlling projectile spam such as Sandman balls...
Mr. Man is offline
Reply


Thread Tools
Display Modes

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 13:15.


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