Login x
User Name:
Password:
Social Links Facebook Twitter YouTube Steam RSS News Feeds

Members Online

»
0 Active | 33 Guests
Online:

LATEST FORUM THREADS

»
CoD: Battle Royale
CoD+UO Map + Mod Releases
Damaged .pk3's
CoD Mapping
heli to attack ai
CoD4 SP Mapping

Forums

»

Welcome to the MODSonline.com forums. Looking for Frequently Asked Questions? Check out our FAQs section or search it out using the SEARCH link below. If you are new here, you may want to check out our rules and this great user's guide to the forums and the website.
For more mapping and modding information, see our Wiki: MODSonWiki.com

Jump To:
Forum: All Forums : Call of Duty 2
Category: CoD2 Scripting
Scripting and coding with Call of Duty 2.
Moderators: foyleman, Foxhound, Mystic, StrYdeR, batistablr, Welshy, DrBiggzz, supersword, playername
Latest Posts
Subscribed Posts
Search
Restricted Access Topic is Locked
Page
Next Page
subscribe
Author Topic: [DEV][HOWTO] create a proper isthrowinggrenade() function
IzNoGoD
General Member
Since: Nov 29, 2008
Posts: 694
Last: Nov 10, 2012
[view latest posts]
Level 6
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 01:06 am
First: this tutorial is written only for the most experienced scripters in cod2. Others should steer clear of this explanation and hope someone writes them a proper implementation.


I got annoyed by all the non-working implementations of isthrowinggrenade() and decided to write my own function for it.

This was quite hard, as the cod2 engine has a lot(!) of limitations. Finally, all works :)

how it works:
As cod2 doesnt switch to the nadeweapon as cod1 does, we have to use the getcurrentoffhand() and switchtooffhand() to determine if the player is throwing a nade.
In essence, it is quite easy, but there are a lot of things you have to keep in mind.

First, if the player starts throwing a smokegrenade, getcurrentoffhand() will return the name of said nade, but the player will not switch back to any offhand. So we have to force it back to a grenade of our choice:
Code:

while(true)
{
     self switchtooffhand("grenade");
     wait 0.05;
}


This works fine, but it cannot detect any normal nadethrows, only the smokegrenade will show up.
If we force the player to the offhand smokegrenade, we can detect fraggrenades, but we lose the ability to detect any smokegrenades.

So what we need is a third offhand grenade. The weaponfile is pasted here:
Code:

WEAPONFILE\weaponType\grenade\weaponClass\grenade\offhandClass\Frag Grenade\weaponSlot\none\displayName\WEAPON_M2FRAGGRENADE\AIOverlayDescription\\modeName\\playerAnimType\other\gunModel\viewmodel_mk2\handModel\viewmodel_hands_cloth\isHandModelOverridable\1\idleAnim\viewmodel_mk2_idle\emptyIdleAnim\viewmodel_mk2_idle\fireAnim\viewmodel_mk2_throw\holdFireAnim\viewmodel_mk2_pullpin\lastShotAnim\viewmodel_mk2_throw\meleeAnim\viewmodel_mk2_idle\raiseAnim\viewmodel_mk2_idle\dropAnim\viewmodel_mk2_idle\altRaiseAnim\viewmodel_mk2_idle\altDropAnim\viewmodel_mk2_idle\autoAimRange\1600\slowdownAimRange\50000\slowdownAimRangeAds\50000\lockonAimRange\50000\lockonAimRangeAds\50000\moveSpeedScale\1\damage\0\meleeDamage\40\fireDelay\0.1\meleeDelay\0.1\fireTime\0.3\holdFireTime\0.6\meleeTime\0.66\reloadTime\2\dropTime\0\raiseTime\0\altDropTime\0\altRaiseTime\0\fuseTime\3.5\clipOnly\1\hipIdleAmount\80\idleCrouchFactor\0.5\idleProneFactor\0.15\parallelDefaultBounce\0.5\parallelBarkBounce\0.6\parallelBrickBounce\0.6\parallelCarpetBounce\0.6\parallelClothBounce\0.2\parallelConcreteBounce\0.6\parallelDirtBounce\0.45\parallelFleshBounce\0.2\parallelFoliageBounce\0.05\parallelGlassBounce\0.4\parallelGrassBounce\0.35\parallelGravelBounce\0.5\parallelIceBounce\0.6\parallelMetalBounce\0.6\parallelMudBounce\0.2\parallelPaperBounce\0.2\parallelPlasterBounce\0.5\parallelRockBounce\0.6\parallelSandBounce\0.3\parallelSnowBounce\0.2\parallelWaterBounce\0.2\parallelWoodBounce\0.6\parallelAsphaltBounce\0.6\perpendicularDefaultBounce\0.25\perpendicularBarkBounce\0.25\perpendicularBrickBounce\0.25\perpendicularCarpetBounce\0.25\perpendicularClothBounce\0.2\perpendicularConcreteBounce\0.25\perpendicularDirtBounce\0.225\perpendicularFleshBounce\0.2\perpendicularFoliageBounce\0.05\perpendicularGlassBounce\0.2\perpendicularGrassBounce\0.15\perpendicularGravelBounce\0.25\perpendicularIceBounce\0.3\perpendicularMetalBounce\0.25\perpendicularMudBounce\0.1\perpendicularPaperBounce\0.2\perpendicularPlasterBounce\0.25\perpendicularRockBounce\0.25\perpendicularSandBounce\0.1\perpendicularSnowBounce\0.1\perpendicularWaterBounce\0.2\perpendicularWoodBounce\0.25\perpendicularAsphaltBounce\0.25\swayMaxAngle\30\swayLerpSpeed\6\swayPitchScale\0.1\swayYawScale\0.1\swayHorizScale\0.1\swayVertScale\0.1\swayShellShockScale\5\worldModel\xmodel/weapon_mk2fraggrenade\hudIcon\gfx/icons/hud@us_grenade.tga\modeIcon\\ammoName\idlenade\maxAmmo\0\startAmmo\0\clipName\idlenade\clipSize\0\sharedAmmoCapName\WEAPON_IDLENADE\sharedAmmoCap\0\dropAmmoMin\0\dropAmmoMax\0\pickupSound\weap_pickup\ammoPickupSound\\pullbackSound\weap_fraggrenade_pin\fireSound\weap_fraggrenade_fire\lastShotSound\\reloadSound\weap_fraggrenade_reload\altSwitchSound\\raiseSound\\putawaySound\\noteTrackSoundA\\noteTrackSoundB\\noteTrackSoundC\\noteTrackSoundD\\reticleCenter\gfx/reticle/center_cross.tga\reticleSide\\reticleCenterSize\32\reticleSideSize\16\reticleMinOfs\4\altWeapon\\twoHanded\0\cookOffHold\0\wideListIcon\0\killIcon\gfx/icons/hud@us_grenade.tga\wideKillIcon\0\flipKillIcon\1\standMoveF\0\standMoveR\1\standMoveU\-1.5\standRotP\0\standRotY\0\standRotR\0\duckedOfsF\-2\duckedOfsR\2\duckedOfsU\-0.2\duckedMoveF\0\duckedMoveR\1\duckedMoveU\-1.5\duckedRotP\0\duckedRotY\0\duckedRotR\0\proneOfsF\-6\proneOfsR\3.5\proneOfsU\0.8\proneMoveF\0\proneMoveR\1\proneMoveU\-1.5\proneRotP\0\proneRotY\0\proneRotR\0\posMoveRate\4\posProneMoveRate\10\standMoveMinSpeed\110\duckedMoveMinSpeed\60\proneMoveMinSpeed\0\posRotRate\5\posProneRotRate\10\standRotMinSpeed\110\duckedRotMinSpeed\60\proneRotMinSpeed\0\explosionRadius\256\explosionInnerDamage\200\explosionOuterDamage\50\projectileSpeed\940\projectileSpeedUp\120\projectileModel\xmodel/projectile_mk2fraggrenade\projExplosionType\grenade\projExplosionEffect\\projExplosionSound\\projectileTrail\none\projectileTrailTime\1\projectileTrailRadius\32\projImpactExplode\0


as you can, or maybe cannot see, this nade has a max of 0 ammo, making it an addition to the player's loadout without any ammo. This is nice, because players will not have any additional nades.

We now need to put this code into a weaponfile, precache it and give it to all players on spawn. (warning: this WILL break the dropoffhand() function used to drop grenades. Write your own fix for this, like storing the last used grenade in a player var)

Now we can force the player to focus on this offhandtype, and catch any other offhands. I suggest you use something like this:

Code:

while(true)
{
     self switchtooffhand("fraggrenade_idle_mp");
     if(self getcurrentoffhand()!="fraggrenade_idle_mp")
     {
          //player is throwing a nade
     }
     wait 0.05;
}


And thats all.

Known bugs: If the smokegrenade is empty, but ppl press the smokegrenade button anyway, this system detects it as if a real nade is being thrown.
Share |
Tally
General Member
Since: Apr 21, 2005
Posts: 819
Last: Oct 26, 2012
[view latest posts]
Level 7
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 09:06 am
I want to preface what I am about to say by making it clear that I do not want to detract from your fine attempt at making a working function. I only say what I am about to say because I am sure there are others like me that do not want to add any dummy weapon files to our mods because such dummies take up vital precache items (i.e. one more dummy means one less real weapon file we can precache).

So, with that being said, I want to share some thoughts:

1. I think you misunderstand the purpose of switchtooffhand() - it will not actually switch you to a weapon like switchtoWeapon() does (because there are no idle grenade models), but it queues up the particular offhand weapon so that if you have more than 1 type of a particular grenade, it will queue it up in the chain of grenade types to be thrown.

Example:

You have more than one type of fraggrenade in your weapon arsenal. A player throws a regular fraggrenade, but then wants to follow it with a sticky grenade. If you don't switch to the sticky grenade with the use of switchtooffhand() you will keep throwing regular fraggrenades every time you press the "throw primary grenade" button. But by using switchtooffhand( "sticky_grenade_mp" ), it queues up the sticky, so that the next time you press the "throw primary grenade" button, it places the sticky grenade in the "primary grenade" slot. In other words, its a cycling function.

That's the purpose of the switchtooffhand() function - it fulfils a role created by the fact that Infinity Ward reduced the number of weapon slots a player can have in their new COD2 engine. In COD1, under the old ID TECH 3 engine, there were 7 weapon slots. IW reduced it to 4 in their new COD2 engine. And this created a need for a cycling function like switchtooffhand().

2. If all you want to do is return a boolean true/false if a player is actually throwing a grenade, then creating a new weapon file just to do this seems rather superfluous to me. There are easier ways to do it. However, if you want to return the NAME OF THE GRENADE being thrown at a specific time, I would say the following function does the job without any need for additional weapon files:

Code:
//======================================
//			GRENADE FUNCTIONS
//======================================

/************************************
	This function is snaffled from 
	the eXtreme+ mod for COD2
*************************************/
TrackGrenades()
{
	for( ;; )
	{
		nades = getentarray( "grenade", "classname" );
		if( isDefined( nades ) )
		{
			for( i = 0; i < nades.size; i++ )
			{
				nade = nades[i];
				if( !isDefined( nade.monitored ) )
					nade thread monitorNade();
			}
		}

		wait( 0.05 );
	}
}

/************************************
	This function is snaffled from 
	the eXtreme+ mod for COD2
*************************************/
monitorNade()
{
	self.monitored = true;
	
	players = getentarray( "player", "classname" );
	for( i = 0; i < players.size; i++ )
	{
		player = players[i];
		if( self istouching( player ) )
			self.nadeThrower = player;
	}

	if( !isDefined( self.nadeThrower ) ) return;

	if( !isAlive( self.nadeThrower ) )
	{
		if( isDefined( self ) ) 
			self delete();
		return;
	}

	self.nadeType = self.nadeThrower getcurrentoffhand();
	self.nadeThrower notify( "grenade_thrown", self, self.nadeType );
	
}

/************************************
	This function is mine - it picks
	up on a player's thrown grenade
	and threads to various methods
*************************************/
WatchGrenades()
{
	self endon( "death" );
	self endon( "disconnect" );
	
	for( ;; )
	{
		self waittill( "grenade_thrown", grenade, grenadeType );
		
	}
}


The first 2 functions are level functions; the third is a player function. It returns the name of the grenade and the actual grenade name. From here you can either run a thread on the player, specifying a particular type of grenade, or on the grenade itself. Either works flawlessly.

On the other hand, if all you want to do is detect if a player is throwing a grenade, then this simple function does the job:

Code:
isHoldingNade( player )
{
	weapon = player getCurrentWeapon();

	switch( weapon )
	{
		case "frag_grenade_american_mp":
		case "frag_grenade_british_mp":
		case "frag_grenade_russian_mp":
		case "frag_grenade_german_mp":
		case "smoke_grenade_german_mp":
		case "smoke_grenade_allied_mp":
		case "stickybomb_mp":
		case "tabungas_mp":
		case "satchel_charge_mp":
		case "binoculars_mp":
		case "hardpoint_mp":
			return true;
	
		 default:
			return false;
	}
}


As you can see, it simply detects the moment a grenade becomes the current weapon. Then returns a boolean true/false if a specified grenade is in the hand at that time.

I offer this as a way to stimulate discussion and further exploration.

Share |
IzNoGoD
General Member
Since: Nov 29, 2008
Posts: 694
Last: Nov 10, 2012
[view latest posts]
Level 6
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 10:26 am
Tally writes...
Quote:


On the other hand, if all you want to do is detect if a player is throwing a grenade, then this simple function does the job:

Code:
isHoldingNade( player )
{
	weapon = player getCurrentWeapon();

	switch( weapon )
	{
		case "frag_grenade_american_mp":
		case "frag_grenade_british_mp":
		case "frag_grenade_russian_mp":
		case "frag_grenade_german_mp":
		case "smoke_grenade_german_mp":
		case "smoke_grenade_allied_mp":
		case "stickybomb_mp":
		case "tabungas_mp":
		case "satchel_charge_mp":
		case "binoculars_mp":
		case "hardpoint_mp":
			return true;
	
		 default:
			return false;
	}
}


As you can see, it simply detects the moment a grenade becomes the current weapon. Then returns a boolean true/false if a specified grenade is in the hand at that time.

I offer this as a way to stimulate discussion and further exploration.



The big problem with this function is, is that it does not work in cod2 anymore. The player never has a different weapon, only a different offhand. Try it. Make it iprintlnbold when you are throwing nades. It wont show anything.

Thats why i wrote this function, to overcome the problem posed by the offhand weapons not being detected by normal getcurrentweapon() functions.

edited on Jan. 8, 2012 03:40 am by IzNoGoD

Edit: i wrote this function because i wanted to have the nadecooking in my script instead of in the weaponfiles. Now i have throwing back of fraggrenades while they stay cooked. (so the first person holds the nade for 3 seconds, and the second person just throws it back directly. The nade will then act as if it were cooked about 3.5 seconds.)
Share |
Tally
General Member
Since: Apr 21, 2005
Posts: 819
Last: Oct 26, 2012
[view latest posts]
Level 7
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 11:37 am
Quote:
The big problem with this function is, is that it does not work in cod2 anymore. The player never has a different weapon, only a different offhand. Try it. Make it iprintlnbold when you are throwing nades. It wont show anything.


Which function doesn't work in COD2 "anymore"? The switchtooffhand() function? It is a COD2 function. It wasn't in COD1, so I don't know what you mean by it isn't working "anymore". And it does work in COD2, exactly how I described it works.

If you mean the isHoldingNade() function I posted, it works in COD2. And has done since 2006. However, it only returns a bool. Not a grenade name.
Share |
serthy
General Member
Since: Sep 8, 2010
Posts: 482
Last: Jun 28, 2013
[view latest posts]
Level 5
Im a fan of MODSonair
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 04:49 pm
Code:

test()
{
for(;;)
{
wait .05;
if(isAlive(self))
self iprintln(self getCurrentWeapon());
}
}


result:

Share |
IzNoGoD
General Member
Since: Nov 29, 2008
Posts: 694
Last: Nov 10, 2012
[view latest posts]
Level 6
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 04:49 pm
Tally writes...
Quote:
Quote:
The big problem with this function is, is that it does not work in cod2 anymore. The player never has a different weapon, only a different offhand. Try it. Make it iprintlnbold when you are throwing nades. It wont show anything.


Which function doesn't work in COD2 "anymore"? The switchtooffhand() function? It is a COD2 function. It wasn't in COD1, so I don't know what you mean by it isn't working "anymore". And it does work in COD2, exactly how I described it works.

If you mean the isHoldingNade() function I posted, it works in COD2. And has done since 2006. However, it only returns a bool. Not a grenade name.


Last time i checked it didnt work at all: i had a script iprintlnbold(self getcurrentweapon()) and it never even changed from the weapon i was supposed to be holding (kar98k_mp) to any nadetype.

In cod2, the whole offhand system is independent from the normal weapon system, unlike cod1, where they were integrated in one another, so you cannot get wheter or not a player is holding a nade using that function.

Also, when on a ladder, the getcurrentweapon() always returns "none", though you can throw a nade while on a ladder.

Furthermore, throwing a nade does not influence your movespeed. If you have a BAR (slow moving weapon) and throw a nade, you walk a lot slower while holding the nade than when you would do the same while holding a pistol. This is because the currentweapon does not change while throwing grenades, although this function you posted is so widespread throughout the whole community, that everyone started relying on it without testing if it even worked.

edited on Jan. 8, 2012 09:50 am by IzNoGoD

Edit: thanks to serthy for posting proof before i posted this. I definitely should type a bit faster xD
Share |
Tally
General Member
Since: Apr 21, 2005
Posts: 819
Last: Oct 26, 2012
[view latest posts]
Level 7
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 05:40 pm
IzNoGoD writes...
Quote:
Tally writes...
Quote:
Quote:
The big problem with this function is, is that it does not work in cod2 anymore. The player never has a different weapon, only a different offhand. Try it. Make it iprintlnbold when you are throwing nades. It wont show anything.


Which function doesn't work in COD2 "anymore"? The switchtooffhand() function? It is a COD2 function. It wasn't in COD1, so I don't know what you mean by it isn't working "anymore". And it does work in COD2, exactly how I described it works.

If you mean the isHoldingNade() function I posted, it works in COD2. And has done since 2006. However, it only returns a bool. Not a grenade name.


Last time i checked it didnt work at all: i had a script iprintlnbold(self getcurrentweapon()) and it never even changed from the weapon i was supposed to be holding (kar98k_mp) to any nadetype.

In cod2, the whole offhand system is independent from the normal weapon system, unlike cod1, where they were integrated in one another, so you cannot get wheter or not a player is holding a nade using that function.

Also, when on a ladder, the getcurrentweapon() always returns "none", though you can throw a nade while on a ladder.

Furthermore, throwing a nade does not influence your movespeed. If you have a BAR (slow moving weapon) and throw a nade, you walk a lot slower while holding the nade than when you would do the same while holding a pistol. This is because the currentweapon does not change while throwing grenades, although this function you posted is so widespread throughout the whole community, that everyone started relying on it without testing if it even worked.

edited on Jan. 8, 2012 09:50 am by IzNoGoD

Edit: thanks to serthy for posting proof before i posted this. I definitely should type a bit faster xD


You need to read what I said previously - switchtooffhand() will NOT act like switchtoWeapon() - that is, it will NOT put a grenade in your hand. For one thing, there are no idle grenade animations like there were in COD1/UO.

What switchtooffhand() will do is queue up the grenade in the appropriate offhand slot. Look at your HUD and you will see the grenade icon change to the stipulated grenade.

As for serthy's so-called "test", I fail to see what it proves. All it is doing is testing getCurrentWeapon() whereas we are talking about something completely different.
Share |
serthy
General Member
Since: Sep 8, 2010
Posts: 482
Last: Jun 28, 2013
[view latest posts]
Level 5
Im a fan of MODSonair
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 06:08 pm
what is the difference between
Code:
isHoldingNade( player )
{
	weapon = player getCurrentWeapon();

	switch( weapon )
	{
		case "frag_grenade_american_mp":
		case "frag_grenade_british_mp":
		case "frag_grenade_russian_mp":
		case "frag_grenade_german_mp":
		case "smoke_grenade_german_mp":
		case "smoke_grenade_allied_mp":
		case "stickybomb_mp":
		case "tabungas_mp":
		case "satchel_charge_mp":
		case "binoculars_mp":
		case "hardpoint_mp":
			return true;
	
		 default:
			return false;
	}
}
and my one? theyre testing the same
both functions uses the getCurrentWeapon() function
-isHoldingNade() only returns true if your current weapon is an offhand item

but for the sake of fairness, i will do it this way:
Code:
test()
{
	self endon( "disconnect" );

	for( ; ; )
	{
		wait( 0.05 );

		if( isHoldingNade( self ) )
			self iprintlnBold( "^2NADE" );
		else
			self iprintln( "^1NADE" );
	}
}


result:




Edit:
you are totally right in what you said about switchToOffhand(), it will queues up the grenade you want, but how you will check if the player is currently presses the fragbutton, without throwing the frag?
-getCurrentWeapon() does not detect offhand items
-extreme mod's solution only detects if you already have thrown an offhand item



edited on Jan. 8, 2012 11:29 am by serthy


Quote:
Please stop confusing issues and injecting red herrings into the discussion
im sorry for that...

i was too slow to edit the post


okay what is the point of this thread?
- checking, if the player has a grenade? done with player hasWeapon( grenade )
- checking if the player has thrown a grenade? done with the extreme-mod solution, it returns a kind of a player notify( "grenade_fire", type , grenade )
- force a specific offhand item to be thrown the next time the player presses the frag/smoke button? done with switchToOffhand()
- checking, if the player Is holding a grenade, but NOT yet has released the nade, so if he isThrowingGrenade() , done with IzNoGoDs method

PS:
i really dont want to offend you tally
Share |
Tally
General Member
Since: Apr 21, 2005
Posts: 819
Last: Oct 26, 2012
[view latest posts]
Level 7
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 06:25 pm
serthy writes...
Quote:
what is the difference between
Code:
isHoldingNade( player )
{
	weapon = player getCurrentWeapon();

	switch( weapon )
	{
		case "frag_grenade_american_mp":
		case "frag_grenade_british_mp":
		case "frag_grenade_russian_mp":
		case "frag_grenade_german_mp":
		case "smoke_grenade_german_mp":
		case "smoke_grenade_allied_mp":
		case "stickybomb_mp":
		case "tabungas_mp":
		case "satchel_charge_mp":
		case "binoculars_mp":
		case "hardpoint_mp":
			return true;
	
		 default:
			return false;
	}
}
and my one?
isHoldingNade() only returns a boolean,with the method of getCurrentWeapon(), what is like my one, so if it would print in my testfunc something like "frag_grenade_german_mp" then isHoldingNade() would return true, but wont change to a grenade weapon


Please stop confusing issues and injecting red herrings into the discussion. We are talking about switchtooffhand(). Neither isHoldingNade() nor switchtooffhand() will PLACE a grenade in your hand:

There are NO NATIVE FUNCTIONS in COD2 which will place a grenade in your hand other than pushing the primary grenade button, or the secondary grenade button.

I think this is what is confusing izNoGOD - he is labouring under the impression that switchtooffhand() will cycle to the stipulated greande and put it in the player's hand in the same way that switchtoWeapon() does. It wont! It merely queues up the grenade in the appropriate grenade slot. You will see the grenade icon change when this happens.

It takes a MANUAL pressing of a grenade button (either "frag" or "smoke" ) to put a grenade in the player's hand.

I hope that clears up what we are talking about. Participants in this thread need to work out what it is they want a function to do. My isHoldingNade() function simply monitors a bool and tell me if a player is holding a grenade at any time. But the player has to actually have pressed the grenade button MANUALLY before before it will return true. But that isn't the point of this thread.
Share |
IzNoGoD
General Member
Since: Nov 29, 2008
Posts: 694
Last: Nov 10, 2012
[view latest posts]
Level 6
Category: CoD2 Scripting
Posted: Sunday, Jan. 8, 2012 06:41 pm
nope, im not confused by anything. the only thing i wanted to show is how you can combine getcurrentoffhand with switchtooffhand to create a WORKING isholdingnade function as all the ones available atm are NOT working at all.

besides, you are the one who posted the not working function, claiming thatvit has been workng since 2006 while serthy just provided proof that it does in fact, not work.

i appreciate your help and everything you did for the cod community, but when someone starts ro post that the function for something that is used all over the community is not working, inexpect you of all people to double check before posting said function and claiming that it works and always has worked, followed by a claim that it "does not put a grenade in your hand" while that is beyond the scope of this topic entirely (besides, grenades DO have idleanims which are shown when using switchtoweapon(grenade))

ps: nothing in this post should be seen as an attack on anyone: im just trying to clarify and fix some issues that have been lingering in the cod community for far too long now

pps: sorry for any typos, im posting this from mobile
Share |
Restricted Access Topic is Locked
Page
Next Page
subscribe
MODSonline.com Forums : Call of Duty 2 : CoD2 Scripting

Latest Syndicated News

»
Codutility.com up and runn...
Nice, and there still using the logo and template for the screenshots, which...
Codutility.com up and runn...
dundy writes...Quote:Call of Duty modding and mapping is barly alive only a ...
Codutility.com up and runn...
Mystic writes...Quote:It seems to me the like the site is completely dead? ...
Codutility.com up and runn...
It seems to me the like the site is completely dead?

Partners & Friends

»