Renegade Public Forums
C&C: Renegade --> Dying since 2003™, resurrected in 2024!
Home » Renegade Discussions » Mod Forum » finding *any* building
finding *any* building [message #467517] Sat, 19 May 2012 05:30 Go to next message
robbyke is currently offline  robbyke
Messages: 348
Registered: September 2010
Location: Belgium
Karma: 0
Recruit
I Try to create some base zone by creating a zone around each building of a base.

This works for all normal maps however i want to add new maps to the rotation and ive noticed that on new maps these zones get bugged for some reason.


Zones do get deployed but they arent there where theyre supposed to be (around the structures) it seems like the building controllers are misplaced but ive checked it on some maps and they were in the place where i would estimate them to be


	SLNode<BuildingGameObj> *x = GameObjManager::BuildingGameObjList.Head();
	while (x)
	{
		GameObject *o = (GameObject *)x->Data();
		if (o && As_ScriptableGameObj(o))
		{
			const char *Preset = Commands->Get_Preset_Name(o);
			const char *Team = "2";// make base zone neutral just in case
			if (strstr(Preset,"_GDI"))
			{
				Team = "1";
			}
			if (strstr(Preset,"_Nod"))
			{
				Team = "0";
			}

			if(_stricmp("2",Team) != 0)
			{
				Vector3 Size = Vector3(40.0f,40.0f,80.0f); //Size of the script zone.
				Matrix3 Rotation(true);
				Rotation.Rotate_Z(DEG_TO_RADF(Commands->Get_Facing(o))); //Set the rotation of the script zone to the same as the building.
				Vector3 Pos = Commands->Get_Position(o);
				Pos.Z -= 20;
				OBBoxClass Box(Pos,Size,Rotation); //Create the bounding box with the position of the beacon, and the size and rotation defined earlier.
				GameObject* Zone = Create_Zone("Script_Zone_All",Box);
				Attach_Script_Once(Zone,"KB_Base_Zone",Team);
			}
		}
		x = x->Next();
	}


i know this doesnt always cover the full base but thats not the main goal


Owner of kambot TT server

kambot.freeforums.org
Re: finding *any* building [message #467582 is a reply to message #467517] Sun, 20 May 2012 18:48 Go to previous messageGo to next message
jonwil is currently offline  jonwil
Messages: 3557
Registered: February 2003
Karma: 0
General (3 Stars)

Here is some code that should work:
#include "BuildingGameObj.h"
	SLNode<BuildingGameObj> *x = GameObjManager::BuildingGameObjList.Head();
	while (x)
	{
		BuildingGameObj *o = (GameObject *)x->Data();
		if (o && (Get_Object_Type(o) == 0 || Get_Object_Type(o) == 1))
		{
			StringClass str;
			str.Format("%d",Get_Object_Type(o));
			Vector3 Size = Vector3(40.0f,40.0f,80.0f); //Size of the script zone.
			Matrix3 Rotation(true);
			Rotation.Rotate_Z(DEG_TO_RADF(Commands->Get_Facing(o))); //Set the rotation of the script zone to the same as the building.
			Vector3 Pos = Commands->Get_Position(o);
			Pos.Z -= 20;
			OBBoxClass Box(Pos,Size,Rotation); //Create the bounding box with the position of the beacon, and the size and rotation defined earlier.
			GameObject* Zone = Create_Zone("Script_Zone_All",Box);
			Attach_Script_Once(Zone,"KB_Base_Zone",Team);
		}
		x = x->Next();
	}

The key here is Get_Object_Type to identify the type of the object.


Jonathan Wilson aka Jonwil
Creator and Lead Coder of the Custom scripts.dll
Renegade Engine Guru
Creator and Lead Coder of TT.DLL
Official member of Tiberian Technologies
Re: finding *any* building [message #467643 is a reply to message #467517] Mon, 21 May 2012 13:46 Go to previous message
robbyke is currently offline  robbyke
Messages: 348
Registered: September 2010
Location: Belgium
Karma: 0
Recruit
gives the same problem Sad

oh well i made map specific zones now gives less problems Smile


Owner of kambot TT server

kambot.freeforums.org
Previous Topic: Sounds like in irc but instead in C++
Next Topic: Can the SP maps be played in MP?
Goto Forum:
  


Current Time: Sun Sep 01 01:23:28 MST 2024

Total time taken to generate the page: 0.00566 seconds