Destroy Object
#6

Quote:
Originally Posted by Hunud
View Post
I tried that now but seems it doesne't work well. I was aiming with gun and shoot at random position and package dissapeared (i was not aiming in object), not even counting 50 health.

Code:
public OnPlayerShootDynamicObject(playerid, weaponid, STREAMER_TAG_OBJECT objectid, Float:x, Float:y, Float:z)
{
	for(new val = 0; val < MAX_CRATES; val++)
	{
		if(crateexists[val])
		{
		    new obb = ArmyCrate[val];
			if(IsValidDynamicObject(obb))
			{
				new Float:oX, Float:oY, Float:oZ;
				GetDynamicObjectPos(obb,oX, oY, oZ);
				if(IsPlayerInRangeOfPoint(playerid, 5, oX, oY, oZ))
				{
				    ArmyCrate[val] -= 1;
				    if(ArmyCrate[val] > 0)
				    {
						DestroyDynamicObject(obb);
						Delete3DTextLabel(armylabel[val]);
						SendClientMessage(playerid, -1, "You have picked up a weapon from the package");
						new rand = random(8);
						switch(rand)
						{
							case 0: GivePlayerWeapon(playerid, 16, 2);
							case 1: GivePlayerWeapon(playerid, 18, 2);
							case 2: GivePlayerWeapon(playerid, 26, 300);
							case 3: GivePlayerWeapon(playerid, 28, 300);
							case 4: GivePlayerWeapon(playerid, 29, 300);
							case 5: GivePlayerWeapon(playerid, 32, 300);
							case 6: GivePlayerWeapon(playerid, 37, 400);
							case 7: GivePlayerWeapon(playerid, 35, 1);
						}
						crateexists[val] = false;
						KillTimer(CrateDespawnTimer[val]);
						ArmyCrate[val] = -1;
						break;
 					}
				}
			}
		}
	}
 	return 1;
}
You didn't check if the crate was actually hit. Also you are mixing up a variable - you check if ArmyCrate[val] is a valid object, but it's holding the health of the crate later on?

You'll need to save the Object ID for the crate seperately and then, inside the loop, check if the objectid that was hit matches one of the crates you are looping through.

For example:

Code:
for(new val = 0; val < MAX_CRATES; val++)
{
if(crateexists[val] && CrateObjectID[val] == objectid)
{
// ...
}
}
If you already saved the Object ID in the ArmyCreate array, use that one instead of "crateobjectid" and make a new array for the crate's health.

I'd also suggest to rename crateexists to something like "ArmyCrateExists" or make an array with an enumerator. Using that many differnet arrays will get messy really soon.
Reply


Messages In This Thread
Destroy Object - by Hunud - 10.07.2018, 15:31
Re: Destroy Object - by NaS - 10.07.2018, 15:37
Re: Destroy Object - by Hunud - 10.07.2018, 15:45
Re: Destroy Object - by NaS - 10.07.2018, 15:50
Re: Destroy Object - by Hunud - 10.07.2018, 16:06
Re: Destroy Object - by NaS - 10.07.2018, 17:43

Forum Jump:


Users browsing this thread: 1 Guest(s)