Jump to content
    1. Welcome to GTAForums!

    1. GTANet.com

    1. GTA Online

      1. The Criminal Enterprises
      2. Updates
      3. Find Lobbies & Players
      4. Guides & Strategies
      5. Vehicles
      6. Content Creator
      7. Help & Support
    2. Red Dead Online

      1. Blood Money
      2. Frontier Pursuits
      3. Find Lobbies & Outlaws
      4. Help & Support
    3. Crews

    1. Grand Theft Auto Series

      1. Bugs*
      2. St. Andrews Cathedral
    2. GTA VI

    3. GTA V

      1. Guides & Strategies
      2. Help & Support
    4. GTA IV

      1. The Lost and Damned
      2. The Ballad of Gay Tony
      3. Guides & Strategies
      4. Help & Support
    5. GTA San Andreas

      1. Classic GTA SA
      2. Guides & Strategies
      3. Help & Support
    6. GTA Vice City

      1. Classic GTA VC
      2. Guides & Strategies
      3. Help & Support
    7. GTA III

      1. Classic GTA III
      2. Guides & Strategies
      3. Help & Support
    8. Portable Games

      1. GTA Chinatown Wars
      2. GTA Vice City Stories
      3. GTA Liberty City Stories
    9. Top-Down Games

      1. GTA Advance
      2. GTA 2
      3. GTA
    1. Red Dead Redemption 2

      1. PC
      2. Help & Support
    2. Red Dead Redemption

    1. GTA Mods

      1. GTA V
      2. GTA IV
      3. GTA III, VC & SA
      4. Tutorials
    2. Red Dead Mods

      1. Documentation
    3. Mod Showroom

      1. Scripts & Plugins
      2. Maps
      3. Total Conversions
      4. Vehicles
      5. Textures
      6. Characters
      7. Tools
      8. Other
      9. Workshop
    4. Featured Mods

      1. Design Your Own Mission
      2. OpenIV
      3. GTA: Underground
      4. GTA: Liberty City
      5. GTA: State of Liberty
    1. Rockstar Games

    2. Rockstar Collectors

    1. Off-Topic

      1. General Chat
      2. Gaming
      3. Technology
      4. Movies & TV
      5. Music
      6. Sports
      7. Vehicles
    2. Expression

      1. Graphics / Visual Arts
      2. GFX Requests & Tutorials
      3. Writers' Discussion
      4. Debates & Discussion
    1. Announcements

    2. Support

    3. Suggestions

*DO NOT* SHARE MEDIA OR LINKS TO LEAKED COPYRIGHTED MATERIAL. Discussion is allowed.

Garage eXtender


Link2012
 Share

Recommended Posts

On 8/20/2018 at 8:10 PM, HeicoDE said:

Thank you very much, that's a great tool! My missing dependencies were MSVCP140D.dll, VCRuntime140D.dll  & ucrtbased.dll, which are debug libraries of Visual Studio, so I fixed my issue by installing VS 2015 (I wanted to do that next anyway, lol).

 

@goodidea82 We should compile the grgx.asi in release mode for SAxVCxLC, otherwise most users will not have functional garages, because most users have not installed VS. We could provide the debug version in an extra folder for... debugging ofc 😛

Good investigation! I will add the release version instead of the debug version once the saving problem is also solved. Please see the the link above 19.08.2018 where I have posted a zip with several variants. It contains 2 or 3 variants compiled as release version.

 

Let's not add intermediate version of the grgx binarires to SAxVCxLC, because GIT stores the whole history. In otherwords, if someone does a checkout via git, he will download all those unnecessary intermediate binary grgx versions. This is not a problem with text files, because GIT stores only the delta/difference on text files, but binary files are stored as they are without compression. If we do this with binary files, the size of the GIT repository will grow fast and unnecessarily.

 

I wrote a PM to Link to take a look at the log files. The thing is that (despite the missing hooks in the save system) the onLoad and onSave functions actually get called.

 

I invested some work into this, but I may not have the time to work on it until it's finished. So anybody is welcome to help/continue.

 

@HeicoDE: I have added your notice about grgx + SilentPath to the Troubleshooting items in the Readme of SAxVCxLC

Edited by goodidea82
Link to comment
Share on other sites

23 hours ago, goodidea82 said:

I have added your notice about grgx + SilentPath to the Troubleshooting items in the Readme of SAxVCxLC

Nice, thanks! 

Link to comment
Share on other sites

More progress on the debugging. Link gave me the hint that it is possible to use a regular debugger. Maybe the Savesystem hooks can be further improved, but this not the problem at the moment, because the function onLoad and onSave get called.

 

I have found out that the problem has to do with the garage coordinates. Either a) they are not defined correctly in the IPL file (in SAxVCxLC) or b) grgx has a wrong computation.

 

When a vehicle is placed in a garage, then the following function is called (part of this is for the log-output so you can compare with the log-output further below):

Spoiler
void CCustomGarage::StoreAndRemoveCarsForThisGarage(CStoredCar*, signed int)
{
	if(this->size == 0) return;
	this->ClearStoredCars();

	size_t nStored = 0;
	CPools::VehiclePool->for_each([this, &nStored](CVehicle* pVehicle)
	{
		const RwV3D vehicleCoords = GetCoords(&pVehicle->__parent.__parent);
		const bool pointInGarage = this->IsPointWithinGarage(vehicleCoords);
		CDebugLog::Trace("\tGarage=%s. Car (%4.2f, %4.2f, %4.2f) Left=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Top=%4.2f, pointInGarage=%d", 
			this->Name, vehicleCoords.x, vehicleCoords.y, vehicleCoords.z, this->Left, this->Right, this->Front, this->Back, this->TopZ, pointInGarage);

		if( pointInGarage )
		{
              
              //Here follows the code to add the vehicle into the garage, but this is never called

 

 

The function iterates over all vehicles (VehiclePool) and checks for every vehicle if it is in the garage. The result is stored in pointInGarage. The problem is that pointInGarage (computed by this->IsPointWithinGarage(vehicleCoords)) always evaluates to false as you can see in the log-output below.  

 

Spoiler

    Garage=man_sgr. Car (7990.59, -8664.71, 5.88) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7807.65, -8641.75, 5.83) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7801.36, -8687.27, 5.84) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Top=11.38, pointInGarage=0
    IS INSIDE
    Garage=man_sgr. Car (7848.73, -8784.66, 7.62) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7977.23, -8733.25, 6.21) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Top=11.38, pointInGarage=0

 

The garage definition is:

Parsing grge line: 7896.8  -8789.68  8.375  7887.93  -8789.71  7896.73  -8800.03  11.375 0  -1  man_sgr  2  3  3       # Vercetti Estate Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 2 = 2
    Added GRGX.
        Name: man_sgr

 

 

However, in the log-output you can see the string IS INSIDE  which was output by the following if-condition that I have built-in to check if the vehicle is in the garage:

 

Spoiler
void CCustomGarage::StoreAndRemoveCarsForThisGarage(CStoredCar*, signed int)
{
	...
	CPools::VehiclePool->for_each([this, &nStored](CVehicle* pVehicle)
	{
		const RwV3D vehicleCoords = GetCoords(&pVehicle->__parent.__parent);
		const bool pointInGarage = this->IsPointWithinGarage(vehicleCoords);
		CDebugLog::Trace("\tGarage=%s. Car (%4.2f, %4.2f, %4.2f) Left=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Top=%4.2f, pointInGarage=%d", 
			this->Name, vehicleCoords.x, vehicleCoords.y, vehicleCoords.z, this->Left, this->Right, this->Front, this->Back, this->TopZ, pointInGarage);
      
		if (this->Left <= vehicleCoords.x && vehicleCoords.x <= this->Right &&
			this->Front <= vehicleCoords.y && vehicleCoords.y <= this->Back &&
			vehicleCoords.z <= this->TopZ ) {
			CDebugLog::Trace("\tIS INSIDE");
		}
      
		if( pointInGarage )
		{

 

 

 

This means that either:

1. the built-in function this->IsPointWithinGarage(vehicleCoords) is not working. (I doubt that.)

2. grgx has confused the meaning of the variables this->Left, this->Right, this->Front, this->Back, this->TopZ

3. The definition of the garage in the IPL file is not correct (wrong meaning/interpretation of the paramters)

 

Here is the part documenting the IPL garage definition.

Spoiler

The task to create a GRGX by IPL is extremely simple, it's almost like creating a normal garage but with additional parameters.

You should put the garage creation line inside a grge section (like a normal garage) and then we're done.
The difference from the regular garage line and the grgx line is that grgx have more params, let's compare:

Regular garage line:
x1, y1, z1, x2, y2, x3, y3, z3, flags, type, name

GRGX garage line:
x1, y1, z1, x2, y2, x3, y3, z3, flags, unused, name, num_cars, grgx_type, door_style

As you can see, we just added some additional params, in that way we detect if it is a regular garage or a grgx garage being readed from the IPL!
Right, now you should ask the meaning of those params, let me explain.

Counter Identifier Type Description
1,2,3 Position 1 (Pos1) float[3] The garage rear bottom right coordinates
4,5 Position 2 (Depth) float[2] The garage front coordinates
6,7,8 Position 3 (Pos2) float[3] The garage rear upper left coordinates
9 Garage flags integer The garage flags (see below)
10 Unused integer This value is unused. it was the regular garage type. Please use -1 here!
11 Name char[8] A string which is used to manipulate the behaviour of garages through a script.
The maximum number of characters for the garage name is 7!!!
12 Num Cars integer The maximum number of cars that this garage can store.
Use -1 for unlimited number of vehicles.
This value is ignored if the garage can't store vehicles
13 GRGX Type integer The garage type. GRGX type is different from regular garage types, (see here)
14 Door Style Flags integer Door style flags. (see below)

 

 

 

 

 

Edited by goodidea82
  • Like 2
Link to comment
Share on other sites

Very good! That's some really nice progress.

Link to comment
Share on other sites

I think the following must be checked

1. understand what Left, Right, Front, Back means,  (and if the definition of CGarageData is correct)

Spoiler
#pragma pack(push, 1)
struct CGarageData	// sizeof=0x50
{
  RwV3D Position;
  RwV2D DirectionA;
  RwV2D DirectionB;
  float TopZ;
  float Width;
  float Depth;
  float Left;
  float Right;
  float Front;
  float Back;
  float DoorPosition;
  unsigned int TimeToOpen;
  CVehicle *pTargetCar;
  char Name[8];
  unsigned char Type;
  char DoorState;
  char Flags;
  char OriginalType;
};

 

3. How Left, Right, Front, Back should be correctly computed from x1, y1, z1, x2, y2, x3, y3, z3

or in other words if your computation is correct:

Spoiler
CCustomGarage* CGarages::AddOneX(float x1, float y1, float z1, float frontX, float frontY, float x2, float y2, float z2, char type, int a10, char *name,
	char flags, int car_count, eGrgxGarageType gtype, unsigned int doorstyle, bool created_by_script)
{
	float top, back, front, width, left, right, depth;
	float kx = frontX + x2 - x1;
	float ky = frontY + y2 - y1;
	top = z2;

	// find left
	{
		left = x1 >= frontX? frontX : x1;
		if(left >= x2) left = x2;
		if(left >= kx) left = kx; 
	}

	// find right
	{
		right = x1 <= frontX? frontX : x1;
		if(right <= x2) right = x2;
		if(right <= kx) right = kx; 
	}

	// find front
	{
		front = y1 >= frontY? frontY : y1;
		if(front >= y2) front = y2;
		if(front >= ky) front = ky;
	}

	// find back
	{
		back = y1 <= frontY? frontY : y1;
		if(back <= y2) back = y2;
		if(back <= ky) back = ky;
	}


	{
		if(gtype == IS_SCRIPT_GARAGE || created_by_script)
			car_count = -1;
		else if(car_count && !CCustomGarage::DoesThisGarageCanStoreVehicles(gtype))
			car_count = 0;

		CCustomGarage* g = new CCustomGarage(car_count);
		CGarages::Garages().push_back(g);

		g->CreatedByScript = created_by_script;
		strncpy(g->Name, name, 8);
		g->Name[7] = 0;
		g->gType = gtype;
		g->OriginalType = (int8_t)(gtype);

		g->Position.x = x1;
		g->Position.y = y1;
		g->Position.z = z1;

		g->DirectionA.x = frontX - x1;
		g->DirectionA.y = frontY - y1;
		g->DirectionB.x = x2 - x1;
		g->DirectionB.y = y2 - y1;

		g->Left = left;
		g->Right = right;
		g->Back = back;
		g->Front = front;
		g->TopZ = top;

		width = sqrt( (g->DirectionA.y*g->DirectionA.y) + (g->DirectionA.x*g->DirectionA.x) );
		depth = sqrt( (g->DirectionB.y*g->DirectionB.y) + (g->DirectionB.x*g->DirectionB.x) );
		const float height = top - z1;

		g->Width = width;
		g->Depth = depth;

		g->DirectionA.x /= width;
		g->DirectionA.y /= width;
		g->DirectionB.x /= depth;
		g->DirectionB.y /= depth;

		float dotProduct = g->DirectionA.x * g->DirectionB.x + g->DirectionA.y * g->DirectionB.y;
		g->Flags = 0;
		//if(flags & FLAG_IPL_DOOR_GOES_UP_AND_ROTATE)	g->Flags |= FLAG_GARAGE_DOOR_OPENS_UP_AND_ROTATE;
		//if(flags & FLAG_IPL_DOOR_GOES_IN)				g->Flags |= FLAG_GARAGE_DOOR_GOES_IN;
		if(flags & FLAG_IPL_CAMERA_FOLLOWS_PLAYER)		g->Flags |= FLAG_GARAGE_CAMERA_FOLLOWS_PLAYER;
		g->OriginalFlags = g->Flags;

		g->gStyle = doorstyle;
		g->OriginalStyle = doorstyle;

		CDebugLog::Trace(
			"\tAdded GRGX.\n"
			"\t\tName: %s\n"
			"\t\tCan store vehicle: %s\n"
			"\t\tIs Parking Garage: %s\n"
			"\t\tIs GARAGE_DONT_SAVE: %s\n"
			"\t\tWidth=%4.1f, Depth=%4.1f, Height=%4.1f,  dotProduct(dirA, dirB)=%4.2f",
				g->Name,
				g->DoesThisGarageCanStoreVehicles() ? "true" : "false",
				g->IsParkingGarage() ? "true" : "false",
				(g->gStyle & GARAGE_DONT_SAVE)? "true" : "false",
				g->Width, g->Depth, height, dotProduct);

		return g;
	}

 

 

3. if and how this->IsPointWithinGarage(vehicleCoords) uses Left, Right, Front, Back from CGarageData.

Spoiler

IsPointWithinGarage is defined as

 

        char IsPointWithinGarage(RwV3D vec)
            { return CGarage__IsPointWithinGarage(this, 0, vec); }

 

which calls the in build-in function

DeclareFunc(0x448740, char (__fastcall *CGarage__IsPointWithinGarage)(CGarage *self, int dummy, RwV3D vec));

 

I have updated the code on GitHub to produce more information on the garages. Take a look: The additional Width, Depth, and Height on custom garages look reasonable. I also output the dotProduct between the directon vectors, and they are close to 0 (=orthogonal).

Spoiler

Log started
 Compiled date and time Aug 26 2018 @ 12:58:23
 with compiler _MSC_VER = 1900
UNICODE encoding is NOT used.
_CPPRTTI
_DEBUG
_DLL
_MSC_BUILD 1
_MSVC_LANG 201402
_NATIVE_WCHAR_T_DEFINED
_WCHAR_T_DEFINED
_WIN32
CStreaming::aInfoForModel=3BD0020
ARRAY_ModelInfo (*(DWORD**)(0x40122D))=1A4C910
ARRAY_ModelInfo (*(DWORD**)(0x4C5538+3))=1A4C910
CGarages::Patch() with is HOODLUM: true
Parsing grge line: 1640.37  -1520.07  12.5118  1647.6  -1520.07  1640.37  -1512.45  18.1245  5  1  mul_lan  
    Is GRGX: false
Parsing grge line: 1523.92  -1653.23  4.72837  1556.92  -1653.23  1523.92  -1633.23  12.2284  5  33  imp_la   
    Is GRGX: false
Parsing grge line: 1873.97  -2096.55  12.487  1880.88  -2096.55  1873.97  -2087.62  15.7681  5  1  duf_LAS  
    Is GRGX: false
Parsing grge line: 1843.91  -1858.8  12.3645  1857.1  -1858.8  1843.91  -1853.79  16.1118  1  2  lasbomb  
    Is GRGX: false
Parsing grge line: 1809.46  -2150.67  12.4283  1809.46  -2142.75  1798.82  -2150.67  16.4347  1  1  modgLAS  
    Is GRGX: false
Parsing grge line: 1694.8  -2088.7  12.3636  1703  -2088.7  1694.8  -2077.48  16.2236  5  31  carlas1  
    Is GRGX: false
Parsing grge line: 2738.4  -2012.55  12.5759  2743.78  -2012.55  2738.4  -2004.41  17.8299  1  1  burg_lk  
    Is GRGX: false
Parsing grge line: 2640.78  -2049.99  12.543  2648.96  -2049.99  2640.78  -2039.55  16.206  1  1  modlast  
    Is GRGX: false
Parsing grge line: 2056.6  -1835.9  12.5443  2071.3  -1835.9  2056.6  -1826.97  18.5443  1  5  sprLAe  
    Is GRGX: false
Parsing grge line: 2502.31  -1699.36  12.4323  2508.61  -1699.36  2502.31  -1691.01  16.5666  1  16  cjsafe  
    Is GRGX: false
Parsing grge line: 1038.24  -1025.67  31.1027  1068.35  -1025.67  1038.24  -995.044  39.1027  1  1  bodLAwN  
    Is GRGX: false
Parsing grge line: 1021.81  -1018.71  30.9081  1021.81  -1029.53  1027.93  -1018.71  36.9081  1  5  sprLAe  
    Is GRGX: false
Parsing grge line: 491.103  -1747.55  9.45516  492.717  -1735.77  481.972  -1746.3  17.565  1  5  spLAw2  
    Is GRGX: false
Parsing grge line: 319.326  -1768.93  3.35686  325.625  -1768.93  319.326  -1759.57  7.49114  1  17  beacsv  
    Is GRGX: false
Parsing grge line: 1352.58  -636.657  108.135  1359.02  -634.418  1349.56  -627.962  113.135  1  32  CEsafe1  
    Is GRGX: false
Parsing grge line: -2728.53  212.295  3.45112  -2716.36  212.295  -2728.53  222.669  8.68705  1  5  mds1SFS  
    Is GRGX: false
Parsing grge line: -2735.46  60.7331  3.07005  -2725.82  60.7331  -2735.46  72.8828  7.92155  1  1  tbon  
    Is GRGX: false
Parsing grge line: -2454.02  -131.556  25.0886  -2442.38  -131.556  -2454.02  -113.935  29.8006  1  42  svgsfs1  
    Is GRGX: false
Parsing grge line: -1941.04  251.714  33.4274  -1941.04  239.541  -1930.66  251.714  38.6634  1  1  mdsSFSe  
    Is GRGX: false
Parsing grge line: -1908.93  292.353  40.0413  -1908.93  277.989  -1900.11  292.353  45.539  1  5  sprsfse  
    Is GRGX: false
Parsing grge line: -2112.48  -21.214  34.303  -2102.48  -21.214  -2112.48  -11.214  40.303  1  1  brgSFSE  
    Is GRGX: false
Parsing grge line: -2043.1  118.609  27.821  -2021.91  118.609  -2043.1  129.609  32.821  1  41  LCKSfse  
    Is GRGX: false
Parsing grge line: -2057.35  150.803  27.8286  -2038.91  150.803  -2057.35  182.876  33.2286  1  1  hbgdSFS  
    Is GRGX: false
Parsing grge line: -1694.78  1033.15  44.1937  -1681.59  1033.15  -1694.78  1038.16  47.941  1  2    
    Is GRGX: false
Parsing grge line: -1794.15  1429.69  4.37321  -1787.18  1429.69  -1794.15  1441.37  14.3732  1  1    
    Is GRGX: false
Parsing grge line: -2171.43  649.416  49.8742  -2161.79  649.416  -2171.43  661.778  58.1902  3  1  fdorsfe  
    Is GRGX: false
Parsing grge line: -1790.97  1209.71  23.763  -1782.58  1209.71  -1790.97  1221.46  28.963  1  1  michdr  
    Is GRGX: false
Parsing grge line: -2108.92  886.553  75.566  -2101.36  886.553  -2108.92  896.807  80.166  7  39  sav1sfe  
    Is GRGX: false
Parsing grge line: -1652.78  647.502  -6.04924  -1617.92  647.502  -1652.78  671.973  0.713446  4  34  imp_sf  
    Is GRGX: false
Parsing grge line: -2430.13  1013.71  49.3413  -2421.2  1013.71  -2430.13  1027.76  55.3413  1  5  sprsfw  
    Is GRGX: false
Parsing grge line: -2699.12  821.489  49.0042  -2692.9  821.489  -2699.12  831.208  53.653  1  40  sav1sfw  
    Is GRGX: false
Parsing grge line: 2218.06  2448.06  -8.43807  2234.47  2448.06  2218.06  2467.56  -1.5463  5  35  imp_lv  
    Is GRGX: false
Parsing grge line: 1550.98  1155.36  8.97329  1621.82  1155.36  1550.98  1224.03  29.8005  4  44  vgshngr  
    Is GRGX: false
Parsing grge line: 2602.6  1438.84  9.8337  2616.4  1438.84  2602.6  1462.11  15.4891  1  1  vgElock  
    Is GRGX: false
Parsing grge line: 2389.6  1483.26  9.81843  2398.11  1483.26  2389.6  1497.84  15.6841  5  5  timy1  
    Is GRGX: false
Parsing grge line: 2382.28  1044  9.8337  2391.14  1044  2382.28  1059.73  13.9338  1  1  vEcmod  
    Is GRGX: false
Parsing grge line: 2449.5  695.018  10.4742  2458.31  695.018  2449.5  700.227  12.9155  1  18  vEsvgrg  
    Is GRGX: false
Parsing grge line: 2002.96  2303.72  9.61706  2010.36  2303.72  2002.96  2317.59  13.9914  1  2  blob2  
    Is GRGX: false
Parsing grge line: 1968.23  2157.88  9.59696  1983.32  2157.88  1968.23  2167.03  16.2367  1  5  blob1  
    Is GRGX: false
Parsing grge line: 1408.65  1899.52  10.115  1417.55  1899.52  1408.65  1904.91  13.1693  1  30  blob6  
    Is GRGX: false
Parsing grge line: 1269.2  2525.14  9.80013  1278.72  2525.14  1269.2  2534.49  12.9784  1  27  blob69  
    Is GRGX: false
Parsing grge line: 929.554  2008.59  10.115  938.452  2008.59  929.554  2013.99  13.1693  1  28  blob7  
    Is GRGX: false
Parsing grge line: -1424.11  2576.61  54.8156  -1416.85  2576.61  -1424.11  2590.84  60.8747  1  5  CNspray  
    Is GRGX: false
Parsing grge line: -103.636  1112.42  18.7017  -96.3613  1112.42  -103.636  1125.79  24.5489  1  5  CN2spry  
    Is GRGX: false
Parsing grge line: -364.439  1194.37  18.597  -356.214  1194.37  -364.439  1202.97  22.3812  1  24  cn2gar1  
    Is GRGX: false
Parsing grge line: 430.059  2542.31  15.166  442.896  2542.31  430.059  2550.75  19.5951  1  25  cn2gar2  
    Is GRGX: false
Parsing grge line: -397.297  2223.17  41.3824  -389.058  2225.38  -398.878  2229.07  44.6359  1  1  ghostdr  
    Is GRGX: false
Parsing grge line: 383.843  2433.28  15.166  426.012  2433.28  383.843  2476.13  24.6886  4  45  dhangar  
    Is GRGX: false
Parsing grge line: -2114.42  -2462.27  29.4809  -2109.36  -2466.37  -2111.68  -2458.88  32.3474  1  1  amumis  
    Is GRGX: false
Parsing grge line: 715.806  -462.403  14.9635  724.293  -462.403  715.806  -447.29  21.4398  1  5  CEspray  
    Is GRGX: false
Parsing grge line: 2227.6  168.649  26.4635  2234.93  168.649  2227.6  176.333  29.4635  1  29  burbdoo  
    Is GRGX: false
Parsing grge line: 783.155  -492.75  16.3361  789.029  -492.75  783.155  -485.118  19.3361  1  26  burbdo2  
    Is GRGX: false
Parsing grge line: 7426.54  -9738.08  5.93358  7407.97  -9730.74  7415.37  -9765.58  12.1336  0  -1  army_wh  4  5  1   # Army Ware House - Vice Port  
    Is GRGX: true
    CGarageBase constructed with size: 4 = 4
    Added GRGX.
        Name: army_wh
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=20.0, Depth=29.7, Height= 6.2,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 7367.37  -8358.41  5.10053  7377.25  -8363.65  7363.98  -8365.21  10.1005  0  -1  hai_pns  4  6  1  # Little Haiti Pay N Spray Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: hai_pns
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=11.2, Depth= 7.6, Height= 5.0,  dotProduct(dirA, dirB)=0.03
Parsing grge line: 7336.01  -9513.27  5.89232  7344.01  -9515.39  7342.81  -9496.96  10.8923  0  -1  dk_pns  4  6  1   # Vice Port Pay N Spray Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: dk_pns
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 8.3, Depth=17.7, Height= 5.0,  dotProduct(dirA, dirB)=0.14
Parsing grge line: 8242.06  -9504.8  3.41874  8241.95  -9510.51  8252.68  -9503.81  9.81874  0  -1  wsh_pns  4  6  1   # Ocean Beach Pay N Spray Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: wsh_pns
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.7, Depth=10.7, Height= 6.4,  dotProduct(dirA, dirB)=-0.11
Parsing grge line: 8574.44  -7821.57  4.18716  8576.17  -7816.17  8563.91  -7819.41  10.5872 0  -1  nbe_pns  4  6  1   # Vice Point Pay N Spray Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: nbe_pns
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.7, Depth=10.7, Height= 6.4,  dotProduct(dirA, dirB)=-0.11
Parsing grge line: 7086.77  -9657.11  5.398  7090.46  -9647.93  7072.48  -9651.14  11.798  8  -1 8_bombs  1  9  1      # 8 Ball's Bomb Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: 8_bombs
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 9.9, Depth=15.5, Height= 6.4,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 7194.82  -8724.13  5.32564  7195.97  -8731.97  7210.77  -8720.41  9.72564 0  -1  lh_stgr  1  3  3   # Cortez's Save Garage   
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: lh_stgr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 7.9, Depth=16.4, Height= 4.4,  dotProduct(dirA, dirB)=-0.08
Parsing grge line: 8277.09  -9734.19  4.50861  8272.65  -9733.49  8276.68  -9740.85  8.20861 0  -1  wsh18sg  1  3  3   # Washinton Save Garage 1  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: wsh18sg
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 4.5, Depth= 6.7, Height= 3.7,  dotProduct(dirA, dirB)=-0.09
Parsing grge line: 8549.41  -7847.36  7.219  8553.56  -7848.62  8551.29  -7839.51  10.714 0  -1  wsh18sg  1  3  3      # Washinton Save Garage 2  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: wsh18sg
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 4.3, Depth= 8.1, Height= 3.5,  dotProduct(dirA, dirB)=-0.06
Parsing grge line: 7434.97  -6935.03  5.758  7440.58  -6932.84  7430.64  -6926.28  9.958 0  -1  linkssg  1  3  1       # Links View Apartment Save Garages.  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: linkssg
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 6.0, Depth= 9.8, Height= 4.2,  dotProduct(dirA, dirB)=-0.09
Parsing grge line: 7402.52  -6946.02  5.455  7409.33  -6943.49  7396.56  -6931.49  10.655 0  -1  hc_sg1  1  3  1       # Hayman Condo Save Garage 1  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: hc_sg1
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 7.3, Depth=15.7, Height= 5.2,  dotProduct(dirA, dirB)=-0.03
Parsing grge line: 7425.88  -6937.96  5.535  7431.69  -6936.43  7421.45  -6929.3  9.935 0  -1  hc_sg2  1  3  1         # Hayman Condo Save Garage 2  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: hc_sg2
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 6.0, Depth= 9.7, Height= 4.4,  dotProduct(dirA, dirB)=-0.21
Parsing grge line: 7413.91  -6942.15  5.536  7417.14  -6941.04  7411.83  -6936.1  8.336 0  -1  hc_mcsg  4  3  16       # Hayman Condo Motor Cycle Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 4 = 4
    Added GRGX.
        Name: hc_mcsg
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 3.4, Depth= 6.4, Height= 2.8,  dotProduct(dirA, dirB)=-0.00
Parsing grge line: 7896.8  -8789.68  8.375  7887.93  -8789.71  7896.73  -8800.03  11.375 0  -1  man_sgr  2  3  3       # Vercetti Estate Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 2 = 2
    Added GRGX.
        Name: man_sgr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 8.9, Depth=10.4, Height= 3.0,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 8700.03  -7609.45  5.202  8700.04  -7613.77  8707.81  -7609.26  8.802 0  -1  el_sank  2  3  3       # El Sanko Casa Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 2 = 2
    Added GRGX.
        Name: el_sank
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 4.3, Depth= 7.8, Height= 3.6,  dotProduct(dirA, dirB)=-0.02
Parsing grge line: 8715.38  -7910.03  5.33404  8699.19  -7910.04  8715.39  -7923.64  9.13404  0  -1  lock_up  4  3  3  # Lock Up garage  
    Is GRGX: true
    CGarageBase constructed with size: 4 = 4
    Added GRGX.
        Name: lock_up
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=16.2, Depth=13.6, Height= 3.8,  dotProduct(dirA, dirB)=-0.00
Parsing grge line: 7248.66  -9091.62  1.39442  7235.74  -9091.7  7248.61  -9107.71  5.79442 0  -1  sa_png  1  6  3     # Spray N GO  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: sa_png
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=12.9, Depth=16.1, Height= 4.4,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 7225.06  -9071.68  1.36662  7234.49  -9070.72  7225.22  -9052.37  5.76662 0  -1  sa_sg1  1  3  3    # Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: sa_sg1
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 9.5, Depth=19.3, Height= 4.4,  dotProduct(dirA, dirB)=0.11
Parsing grge line: 7236.8  -9070.87  1.3802  7246.16  -9070.84  7236.9  -9052.37  5.5802 0  -1  sa_sg2  1  3  3         # Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: sa_sg2
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 9.4, Depth=18.5, Height= 4.2,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 7248.17  -9070.78  1.3802  7257.51  -9070.68  7248.26  -9052.29  5.5802 0  -1  sa_sg3  1  3  3     # Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: sa_sg3
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 9.3, Depth=18.5, Height= 4.2,  dotProduct(dirA, dirB)=0.02
Parsing grge line: 7258.89  -9070.76  1.51289  7268.29  -9070.74  7258.97  -9052.29  5.71289 0  -1  sa_sg4  1  3  3    # Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: sa_sg4
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 9.4, Depth=18.5, Height= 4.2,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 7283.75  -9091.73  0.959035  7271.69  -9091.66  7283.9  -9111.28  5.95903 0  -1  sa_sg5  1  3  3   # Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: sa_sg5
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=12.1, Depth=19.6, Height= 5.0,  dotProduct(dirA, dirB)=-0.01
Parsing grge line: 9411.7  8332.55  12.2496  9411.7  8314.27  9437.57  8332.62  16.8496 0   -1  pl_ie  4  5   3        # Portland Import-Export Garage  
    Is GRGX: true
    CGarageBase constructed with size: 4 = 4
    Added GRGX.
        Name: pl_ie
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=18.3, Depth=25.9, Height= 4.6,  dotProduct(dirA, dirB)=-0.00
Parsing grge line: 6816.01  9150.59  58.151  6797.86  9150.76  6816.11  9124.75  62.351 0  -1 svi_gr  4  5  3          # Shoreside Import-Export Garage  
    Is GRGX: true
    CGarageBase constructed with size: 4 = 4
    Added GRGX.
        Name: svi_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=18.2, Depth=25.8, Height= 4.2,  dotProduct(dirA, dirB)=-0.01
Parsing grge line: 9199.39  8900.36  13.7042  9194.25  8900.29  9200.13  8889.54  16.7042 0  -1  pl_bms  1  9  1       # Portland Bomb Shop with remote-control detonator    
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: pl_bms
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.1, Depth=10.8, Height= 3.0,  dotProduct(dirA, dirB)=-0.05
Parsing grge line: 8291.04  8425.99  25.14  8291.47  8420.69  8300.75  8426.18  28.6238  0  -1  si_bms  1  7  1        # Staunton Island Bomb Shop with timed detonator  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: si_bms
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.3, Depth= 9.7, Height= 3.5,  dotProduct(dirA, dirB)=0.06
Parsing grge line: 6834.54  9058.79  57.5702  6830.84  9058.8  6835.04  9049.74  61.7702 0  -1  sv_bms  1  9  1        # Shoreside Bomb Shop with remote-control detonator  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: sv_bms
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 3.7, Depth= 9.1, Height= 4.2,  dotProduct(dirA, dirB)=-0.06
Parsing grge line: 9343.52  8820.76  49.6481  9343.24  8812.83  9357.38  8820.7  53.8481 0  -1  salv_gr  1  3  1       # Portland Salvatore's Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: salv_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 7.9, Depth=13.9, Height= 4.2,  dotProduct(dirA, dirB)=-0.03
Parsing grge line: 8805.94  8689.28  7.9928  8805.85  8684.9  8812.5  8689.29  10.9928 0  -1  pl_hsg  1  3  1          # Portland Hideout Save Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: pl_hsg
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 4.4, Depth= 6.6, Height= 3.0,  dotProduct(dirA, dirB)=-0.02
Parsing grge line: 9356.46  8194.4  10.8972  9364.98  8194.93  9356.48  8217.89  17.0972 0  -1  secu_gr  1  4  3       # Portland Securicar Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: secu_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 8.5, Depth=23.5, Height= 6.2,  dotProduct(dirA, dirB)=0.06
Parsing grge line: 9005.47  8588.68  12.579  9002.33  8588.77  9006.27  8581.69  15.979 0  -1  lui_lgr  1  4  3        # Luigi's Lockup Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: lui_lgr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 3.1, Depth= 7.0, Height= 3.4,  dotProduct(dirA, dirB)=-0.14
Parsing grge line: 8030.92  8524.8  14.9517  8022.4  8524.76  8030.85  8513.26  19.4517 0  -1  sih_gr  1  4  3         # Staunton Island Hideout Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: sih_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 8.5, Depth=11.5, Height= 4.5,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 8177.83  8206.01  26.9174  8173.28  8205.8  8178.02  8197.14  29.4174 0  -1 king_gr  1  4  3        # King Courtney's Lockup Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: king_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 4.6, Depth= 8.9, Height= 2.5,  dotProduct(dirA, dirB)=0.02
Parsing grge line: 7969.13  8682.9  15.15  7974.88  8682.84  7969.21  8692.27  18.7305 0  -1 ch1_gr  1  3  3           # Colombian Hideout Garage 1  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ch1_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.8, Depth= 9.4, Height= 3.6,  dotProduct(dirA, dirB)=-0.00
Parsing grge line: 7978.47  8682.97  15.1476  7984.15  8682.83  7978.49  8692.22  18.6476 0  -1 ch2_gr  1  3  3        # Colombian Hideout Garage 2  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ch2_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.7, Depth= 9.3, Height= 3.5,  dotProduct(dirA, dirB)=-0.02
Parsing grge line: 7946.15  8645.16  15.1564  7945.98  8652.77  7939.61  8645.14  18.8564 0  -1 ch3_gr  1  3  3        # Colombian Hideout Garage 3  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ch3_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 7.6, Depth= 6.5, Height= 3.7,  dotProduct(dirA, dirB)=0.02
Parsing grge line: 7966.83  8622.99  15.2005  7958.1  8623  7966.8  8612.03  19.2005 0  -1 ch4_gr  1  3  3             # Colombian Hideout Garage 4  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ch4_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 8.7, Depth=11.0, Height= 4.0,  dotProduct(dirA, dirB)=0.00
Parsing grge line: 7946.1  8656.45  15.1564  7946.07  8663.19  7939.72  8656.53  18.9564 0  -1 ch5_gr  1  3  3         # Colombian Hideout Garage 5  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ch5_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 6.7, Depth= 6.4, Height= 3.8,  dotProduct(dirA, dirB)=0.02
Parsing grge line: 7975.64  8622.92  15.2005  7968.03  8622.74  7975.63  8612.22  19.2005 0  -1 ch6_gr  1  3  3        # Colombian Hideout Garage 6 - Extra  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ch6_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 7.6, Depth=10.7, Height= 4.0,  dotProduct(dirA, dirB)=0.02
Parsing grge line: 8291.16  8497.07  25.1081  8291.03  8489.45  8298.94  8497.07  28.95 0  -1 ken_gr  1  4  3          # Kenji's Lockup Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ken_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 7.6, Depth= 7.8, Height= 3.8,  dotProduct(dirA, dirB)=-0.02
Parsing grge line: 8150.4  8007.1  20.9857  8150.34  8000.13  8160.8  8007.1  24.3857 0  -1 ray_gr  1  4  3            # Ray's Lockup Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ray_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 7.0, Depth=10.4, Height= 3.4,  dotProduct(dirA, dirB)=-0.01
Parsing grge line: 8291.31  8565.11  20.266  8291.15  8559.64  8299.88  8565.18  23.63 0  -1 mcaf_gr  1  3  3          # McAffrey's Hideout Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: mcaf_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.5, Depth= 8.6, Height= 3.4,  dotProduct(dirA, dirB)=-0.04
Parsing grge line: 7252.54  8953.69  17.8549  7252.12  8958.71  7244.89  8953.34  22.9549 0  -1 svl_gr  1  3  3        # Shoreside Vale Left Hideout Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: svl_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.0, Depth= 7.7, Height= 5.1,  dotProduct(dirA, dirB)=0.04
Parsing grge line: 7252.3  8959.15  17.9549  7252.33  8963.67  7244.62  8958.36  22.9549 0  -1 svc_gr  1  3  3         # Shoreside Vale Central Hideout Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: svc_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 4.5, Depth= 7.7, Height= 5.0,  dotProduct(dirA, dirB)=-0.11
Parsing grge line: 7252.31  8964.35  17.9549  7252.55  8968.95  7244.72  8963.92  22.9549 0  -1 svr_gr  1  3  3        # Shoreside Vale Right Hideout Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: svr_gr
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 4.6, Depth= 7.6, Height= 5.0,  dotProduct(dirA, dirB)=-0.11
Parsing grge line: 9128.94  8758.24  22.6163  9128.82  8754.73  9135.59  8758.99  26.078 0  -1 dice_gr  1  4  3        # D-Ice's Defusal Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: dice_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 3.5, Depth= 6.7, Height= 3.5,  dotProduct(dirA, dirB)=-0.15
Parsing grge line: 7072.33  8834.79  32.8457  7072.2  8828.03  7090.34  8834.73  37.8457 0  -1 dpdo_gr  1  4  3        # D-Ice's Platinium Drop-off Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: dpdo_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 6.8, Depth=18.0, Height= 5.0,  dotProduct(dirA, dirB)=-0.02
Parsing grge line: 6877.16  8923.64  39.9206  6877.34  8930.05  6865.73  8922.71  44.5206 0  -1 dons_gr  1  4  3       # Donald's Securicar Garage  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: dons_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 6.4, Depth=11.5, Height= 4.6,  dotProduct(dirA, dirB)=-0.11
Parsing grge line: 9268.27  8683.96  48.754  9268.35  8688.77  9261.71  8683.98  50.754 0  -1 ptr_gr  1  4  3          # Portland - Near Toni's Resturant Garage - Extra  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: ptr_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 4.8, Depth= 6.6, Height= 2.0,  dotProduct(dirA, dirB)=-0.01
Parsing grge line: 9000.36  8423.45  12.4514  9000.38  8428.27  8993.65  8423.4  15.6514 0  -1 pan_gr  1  4  3         # Portland - Near Ammunation Garage - Extra  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: pan_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 4.8, Depth= 6.7, Height= 3.2,  dotProduct(dirA, dirB)=-0.01
Parsing grge line: 8209.91  8569.28  24.974  8218.16  8569.45  8209.69  8577.65  28.574 0  -1 lcss_gr  1  4  3         # LCS Staunto Hideout Garage -Extra  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: lcss_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 8.3, Depth= 8.4, Height= 3.6,  dotProduct(dirA, dirB)=-0.01
Parsing grge line: 8007.83  7440.2  22.801  8007.57  7431.47  8035.3  7439.84  26.801 0  -1 lm_gr  1  4  3             # Love Media Garage - Extra  
    Is GRGX: true
    CGarageBase constructed with size: 1 = 1
    Added GRGX.
        Name: lm_gr
        Can store vehicle: true
        Is Parking Garage: true
        Is GARAGE_DONT_SAVE: false
        Width= 8.7, Depth=27.5, Height= 4.0,  dotProduct(dirA, dirB)=-0.02
Parsing grge line: 8843.41  8645.9  10.0962  8837.39  8645.85  8843.62  8632.57  15.2962 0  -1 pl_pns  1  6  1         # Portland Pay N Spray Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: pl_pns
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 6.0, Depth=13.3, Height= 5.2,  dotProduct(dirA, dirB)=-0.01
Parsing grge line: 8291.07  8508.25  25.4564  8291.11  8502.59  8300.5  8508.27  28.9564 0  -1 si_pns  1  6  1         # Staunton Island Pay N Spray Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: si_pns
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 5.7, Depth= 9.4, Height= 3.5,  dotProduct(dirA, dirB)=0.01
Parsing grge line: 6776.36  9032.49  57.7704  6776.03  9037.29  6767.35  9032.34  61.9704 0  -1 sv_pns  1  6  3        # Shoreside Vale Pay N Spray Shop  
    Is GRGX: true
    CGarageBase constructed with size: 0 = 0
    Added GRGX.
        Name: sv_pns
        Can store vehicle: false
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width= 4.8, Depth= 9.0, Height= 4.2,  dotProduct(dirA, dirB)=0.05


The log continues with CGarageData information on the ORIGINAL garages:

Spoiler

List of ORIGINAL garages:
    Garage=mul_lan ORIG Type=19 OrigType=1 Pos=(1640.37, -1520.07, 12.51) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1640.37, Right=1647.60, Front=-1520.07, Back=-1512.45, Top=18.12
        Test point 1 (1643.98, -1516.26, 15.32) in garage = TRUE
        Test point 2 (1641.37, -1519.07, 15.32) in garage = TRUE

    Garage=imp_la ORIG Type=33 OrigType=33 Pos=(1523.92, -1653.23, 4.73) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1523.92, Right=1556.92, Front=-1653.23, Back=-1633.23, Top=12.23
        Test point 1 (1540.42, -1643.23, 8.48) in garage = TRUE
        Test point 2 (1524.92, -1652.23, 8.48) in garage = TRUE

    Garage=duf_LAS ORIG Type=15 OrigType=1 Pos=(1873.97, -2096.55, 12.49) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1873.97, Right=1880.88, Front=-2096.55, Back=-2087.62, Top=15.77
        Test point 1 (1877.43, -2092.08, 14.13) in garage = TRUE
        Test point 2 (1874.97, -2095.55, 14.13) in garage = TRUE

    Garage=lasbomb ORIG Type=2 OrigType=2 Pos=(1843.91, -1858.80, 12.36) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1843.91, Right=1857.10, Front=-1858.80, Back=-1853.79, Top=16.11
        Test point 1 (1850.51, -1856.30, 14.24) in garage = TRUE
        Test point 2 (1844.91, -1857.80, 14.24) in garage = TRUE

    Garage=modgLAS ORIG Type=1 OrigType=1 Pos=(1809.46, -2150.67, 12.43) DirA=(0.00, 1.00), DirB=(-1.00, 0.00)
        Left=1798.82, Right=1809.46, Front=-2150.67, Back=-2142.75, Top=16.43
        Test point 1 (1804.14, -2146.71, 14.43) in garage = TRUE
        Test point 2 (1808.46, -2149.67, 14.43) in garage = TRUE

    Garage=carlas1 ORIG Type=31 OrigType=31 Pos=(1694.80, -2088.70, 12.36) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1694.80, Right=1703.00, Front=-2088.70, Back=-2077.48, Top=16.22
        Test point 1 (1698.90, -2083.09, 14.29) in garage = TRUE
        Test point 2 (1695.80, -2087.70, 14.29) in garage = TRUE

    Garage=burg_lk ORIG Type=43 OrigType=1 Pos=(2738.40, -2012.55, 12.58) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2738.40, Right=2743.78, Front=-2012.55, Back=-2004.41, Top=17.83
        Test point 1 (2741.09, -2008.48, 15.20) in garage = TRUE
        Test point 2 (2739.40, -2011.55, 15.20) in garage = TRUE

    Garage=modlast ORIG Type=36 OrigType=1 Pos=(2640.78, -2049.99, 12.54) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2640.78, Right=2648.96, Front=-2049.99, Back=-2039.55, Top=16.21
        Test point 1 (2644.87, -2044.77, 14.37) in garage = TRUE
        Test point 2 (2641.78, -2048.99, 14.37) in garage = TRUE

    Garage=sprLAe ORIG Type=5 OrigType=5 Pos=(2056.60, -1835.90, 12.54) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2056.60, Right=2071.30, Front=-1835.90, Back=-1826.97, Top=18.54
        Test point 1 (2063.95, -1831.44, 15.54) in garage = TRUE
        Test point 2 (2057.60, -1834.90, 15.54) in garage = TRUE

    Garage=cjsafe ORIG Type=16 OrigType=16 Pos=(2502.31, -1699.36, 12.43) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2502.31, Right=2508.61, Front=-1699.36, Back=-1691.01, Top=16.57
        Test point 1 (2505.46, -1695.19, 14.50) in garage = TRUE
        Test point 2 (2503.31, -1698.36, 14.50) in garage = TRUE

    Garage=bodLAwN ORIG Type=38 OrigType=1 Pos=(1038.24, -1025.67, 31.10) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1038.24, Right=1068.35, Front=-1025.67, Back=-995.04, Top=39.10
        Test point 1 (1053.29, -1010.36, 35.10) in garage = TRUE
        Test point 2 (1039.24, -1024.67, 35.10) in garage = TRUE

    Garage=sprLAe ORIG Type=5 OrigType=5 Pos=(1021.81, -1018.71, 30.91) DirA=(0.00, -1.00), DirB=(1.00, 0.00)
        Left=1021.81, Right=1027.93, Front=-1029.53, Back=-1018.71, Top=36.91
        Test point 1 (1024.87, -1024.12, 33.91) in garage = TRUE
        Test point 2 (1022.81, -1019.71, 33.91) in garage = TRUE

    Garage=spLAw2 ORIG Type=5 OrigType=5 Pos=(491.10, -1747.55, 9.46) DirA=(0.14, 0.99), DirB=(-0.99, 0.14)
        Left=481.97, Right=492.72, Front=-1747.55, Back=-1734.52, Top=17.57
        Test point 1 (487.34, -1741.04, 13.51) in garage = TRUE
        Test point 2 (490.25, -1746.42, 13.51) in garage = TRUE

    Garage=beacsv ORIG Type=17 OrigType=17 Pos=(319.33, -1768.93, 3.36) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=319.33, Right=325.63, Front=-1768.93, Back=-1759.57, Top=7.49
        Test point 1 (322.48, -1764.25, 5.42) in garage = TRUE
        Test point 2 (320.33, -1767.93, 5.42) in garage = TRUE

    Garage=CEsafe1 ORIG Type=32 OrigType=32 Pos=(1352.58, -636.66, 108.14) DirA=(0.94, 0.33), DirB=(-0.33, 0.94)
        Left=1349.56, Right=1359.02, Front=-636.66, Back=-625.72, Top=113.14
        Test point 1 (1354.29, -631.19, 110.64) in garage = TRUE
        Test point 2 (1353.20, -635.38, 110.64) in garage = TRUE

    Garage=mds1SFS ORIG Type=37 OrigType=5 Pos=(-2728.53, 212.29, 3.45) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2728.53, Right=-2716.36, Front=212.29, Back=222.67, Top=8.69
        Test point 1 (-2722.45, 217.48, 6.07) in garage = TRUE
        Test point 2 (-2727.53, 213.29, 6.07) in garage = TRUE

    Garage=tbon ORIG Type=19 OrigType=1 Pos=(-2735.46, 60.73, 3.07) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2735.46, Right=-2725.82, Front=60.73, Back=72.88, Top=7.92
        Test point 1 (-2730.64, 66.81, 5.50) in garage = TRUE
        Test point 2 (-2734.46, 61.73, 5.50) in garage = TRUE

    Garage=svgsfs1 ORIG Type=42 OrigType=42 Pos=(-2454.02, -131.56, 25.09) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2454.02, Right=-2442.38, Front=-131.56, Back=-113.93, Top=29.80
        Test point 1 (-2448.20, -122.75, 27.44) in garage = TRUE
        Test point 2 (-2453.02, -130.56, 27.44) in garage = TRUE

    Garage=mdsSFSe ORIG Type=38 OrigType=1 Pos=(-1941.04, 251.71, 33.43) DirA=(0.00, -1.00), DirB=(1.00, 0.00)
        Left=-1941.04, Right=-1930.66, Front=239.54, Back=251.71, Top=38.66
        Test point 1 (-1935.85, 245.63, 36.05) in garage = TRUE
        Test point 2 (-1940.04, 250.71, 36.05) in garage = TRUE

    Garage=sprsfse ORIG Type=5 OrigType=5 Pos=(-1908.93, 292.35, 40.04) DirA=(0.00, -1.00), DirB=(1.00, 0.00)
        Left=-1908.93, Right=-1900.11, Front=277.99, Back=292.35, Top=45.54
        Test point 1 (-1904.52, 285.17, 42.79) in garage = TRUE
        Test point 2 (-1907.93, 291.35, 42.79) in garage = TRUE

    Garage=brgSFSE ORIG Type=43 OrigType=1 Pos=(-2112.48, -21.21, 34.30) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2112.48, Right=-2102.48, Front=-21.21, Back=-11.21, Top=40.30
        Test point 1 (-2107.48, -16.21, 37.30) in garage = TRUE
        Test point 2 (-2111.48, -20.21, 37.30) in garage = TRUE

    Garage=LCKSfse ORIG Type=41 OrigType=41 Pos=(-2043.10, 118.61, 27.82) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2043.10, Right=-2021.91, Front=118.61, Back=129.61, Top=32.82
        Test point 1 (-2032.51, 124.11, 30.32) in garage = TRUE
        Test point 2 (-2042.10, 119.61, 30.32) in garage = TRUE

    Garage=hbgdSFS ORIG Type=19 OrigType=1 Pos=(-2057.35, 150.80, 27.83) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2057.35, Right=-2038.91, Front=150.80, Back=182.88, Top=33.23
        Test point 1 (-2048.13, 166.84, 30.53) in garage = TRUE
        Test point 2 (-2056.35, 151.80, 30.53) in garage = TRUE

    Garage=fdorsfe ORIG Type=19 OrigType=1 Pos=(-2171.43, 649.42, 49.87) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2171.43, Right=-2161.79, Front=649.42, Back=661.78, Top=58.19
        Test point 1 (-2166.61, 655.60, 54.03) in garage = TRUE
        Test point 2 (-2170.43, 650.42, 54.03) in garage = TRUE

    Garage=michdr ORIG Type=1 OrigType=1 Pos=(-1790.97, 1209.71, 23.76) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-1790.97, Right=-1782.58, Front=1209.71, Back=1221.46, Top=28.96
        Test point 1 (-1786.77, 1215.58, 26.36) in garage = TRUE
        Test point 2 (-1789.97, 1210.71, 26.36) in garage = TRUE

    Garage=sav1sfe ORIG Type=39 OrigType=39 Pos=(-2108.92, 886.55, 75.57) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2108.92, Right=-2101.36, Front=886.55, Back=896.81, Top=80.17
        Test point 1 (-2105.14, 891.68, 77.87) in garage = TRUE
        Test point 2 (-2107.92, 887.55, 77.87) in garage = TRUE

    Garage=imp_sf ORIG Type=34 OrigType=34 Pos=(-1652.78, 647.50, -6.05) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-1652.78, Right=-1617.92, Front=647.50, Back=671.97, Top=0.71
        Test point 1 (-1635.35, 659.74, -2.67) in garage = TRUE
        Test point 2 (-1651.78, 648.50, -2.67) in garage = TRUE

    Garage=sprsfw ORIG Type=5 OrigType=5 Pos=(-2430.13, 1013.71, 49.34) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2430.13, Right=-2421.20, Front=1013.71, Back=1027.76, Top=55.34
        Test point 1 (-2425.67, 1020.73, 52.34) in garage = TRUE
        Test point 2 (-2429.13, 1014.71, 52.34) in garage = TRUE

    Garage=sav1sfw ORIG Type=40 OrigType=40 Pos=(-2699.12, 821.49, 49.00) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-2699.12, Right=-2692.90, Front=821.49, Back=831.21, Top=53.65
        Test point 1 (-2696.01, 826.35, 51.33) in garage = TRUE
        Test point 2 (-2698.12, 822.49, 51.33) in garage = TRUE

    Garage=imp_lv ORIG Type=35 OrigType=35 Pos=(2218.06, 2448.06, -8.44) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2218.06, Right=2234.47, Front=2448.06, Back=2467.56, Top=-1.55
        Test point 1 (2226.27, 2457.81, -4.99) in garage = TRUE
        Test point 2 (2219.06, 2449.06, -4.99) in garage = TRUE

    Garage=vgshngr ORIG Type=44 OrigType=44 Pos=(1550.98, 1155.36, 8.97) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1550.98, Right=1621.82, Front=1155.36, Back=1224.03, Top=29.80
        Test point 1 (1586.40, 1189.70, 19.39) in garage = TRUE
        Test point 2 (1551.98, 1156.36, 19.39) in garage = TRUE

    Garage=vgElock ORIG Type=43 OrigType=1 Pos=(2602.60, 1438.84, 9.83) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2602.60, Right=2616.40, Front=1438.84, Back=1462.11, Top=15.49
        Test point 1 (2609.50, 1450.47, 12.66) in garage = TRUE
        Test point 2 (2603.60, 1439.84, 12.66) in garage = TRUE

    Garage=timy1 ORIG Type=5 OrigType=5 Pos=(2389.60, 1483.26, 9.82) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2389.60, Right=2398.11, Front=1483.26, Back=1497.84, Top=15.68
        Test point 1 (2393.85, 1490.55, 12.75) in garage = TRUE
        Test point 2 (2390.60, 1484.26, 12.75) in garage = TRUE

    Garage=vEcmod ORIG Type=38 OrigType=1 Pos=(2382.28, 1044.00, 9.83) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2382.28, Right=2391.14, Front=1044.00, Back=1059.73, Top=13.93
        Test point 1 (2386.71, 1051.86, 11.88) in garage = TRUE
        Test point 2 (2383.28, 1045.00, 11.88) in garage = TRUE

    Garage=vEsvgrg ORIG Type=18 OrigType=18 Pos=(2449.50, 695.02, 10.47) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2449.50, Right=2458.31, Front=695.02, Back=700.23, Top=12.92
        Test point 1 (2453.91, 697.62, 11.69) in garage = TRUE
        Test point 2 (2450.50, 696.02, 11.69) in garage = TRUE

    Garage=blob2 ORIG Type=2 OrigType=2 Pos=(2002.96, 2303.72, 9.62) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2002.96, Right=2010.36, Front=2303.72, Back=2317.59, Top=13.99
        Test point 1 (2006.66, 2310.66, 11.80) in garage = TRUE
        Test point 2 (2003.96, 2304.72, 11.80) in garage = TRUE

    Garage=blob1 ORIG Type=5 OrigType=5 Pos=(1968.23, 2157.88, 9.60) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1968.23, Right=1983.32, Front=2157.88, Back=2167.03, Top=16.24
        Test point 1 (1975.77, 2162.46, 12.92) in garage = TRUE
        Test point 2 (1969.23, 2158.88, 12.92) in garage = TRUE

    Garage=blob6 ORIG Type=30 OrigType=30 Pos=(1408.65, 1899.52, 10.11) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1408.65, Right=1417.55, Front=1899.52, Back=1904.91, Top=13.17
        Test point 1 (1413.10, 1902.22, 11.64) in garage = TRUE
        Test point 2 (1409.65, 1900.52, 11.64) in garage = TRUE

    Garage=blob69 ORIG Type=27 OrigType=27 Pos=(1269.20, 2525.14, 9.80) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=1269.20, Right=1278.72, Front=2525.14, Back=2534.49, Top=12.98
        Test point 1 (1273.96, 2529.81, 11.39) in garage = TRUE
        Test point 2 (1270.20, 2526.14, 11.39) in garage = TRUE

    Garage=blob7 ORIG Type=28 OrigType=28 Pos=(929.55, 2008.59, 10.11) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=929.55, Right=938.45, Front=2008.59, Back=2013.99, Top=13.17
        Test point 1 (934.00, 2011.29, 11.64) in garage = TRUE
        Test point 2 (930.55, 2009.59, 11.64) in garage = TRUE

    Garage=CNspray ORIG Type=5 OrigType=5 Pos=(-1424.11, 2576.61, 54.82) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-1424.11, Right=-1416.85, Front=2576.61, Back=2590.84, Top=60.87
        Test point 1 (-1420.48, 2583.73, 57.85) in garage = TRUE
        Test point 2 (-1423.11, 2577.61, 57.85) in garage = TRUE

    Garage=CN2spry ORIG Type=5 OrigType=5 Pos=(-103.64, 1112.42, 18.70) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-103.64, Right=-96.36, Front=1112.42, Back=1125.79, Top=24.55
        Test point 1 (-100.00, 1119.10, 21.63) in garage = TRUE
        Test point 2 (-102.64, 1113.42, 21.63) in garage = TRUE

    Garage=cn2gar1 ORIG Type=24 OrigType=24 Pos=(-364.44, 1194.37, 18.60) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=-364.44, Right=-356.21, Front=1194.37, Back=1202.97, Top=22.38
        Test point 1 (-360.33, 1198.67, 20.49) in garage = TRUE
        Test point 2 (-363.44, 1195.37, 20.49) in garage = TRUE

    Garage=cn2gar2 ORIG Type=25 OrigType=25 Pos=(430.06, 2542.31, 15.17) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=430.06, Right=442.90, Front=2542.31, Back=2550.75, Top=19.60
        Test point 1 (436.48, 2546.53, 17.38) in garage = TRUE
        Test point 2 (431.06, 2543.31, 17.38) in garage = TRUE

    Garage=ghostdr ORIG Type=19 OrigType=1 Pos=(-397.30, 2223.17, 41.38) DirA=(0.97, 0.26), DirB=(-0.26, 0.97)
        Left=-398.88, Right=-389.06, Front=2223.17, Back=2231.28, Top=44.64
        Test point 1 (-393.97, 2227.23, 43.01) in garage = TRUE
        Test point 2 (-396.59, 2224.39, 43.01) in garage = TRUE

    Garage=dhangar ORIG Type=45 OrigType=45 Pos=(383.84, 2433.28, 15.17) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=383.84, Right=426.01, Front=2433.28, Back=2476.13, Top=24.69
        Test point 1 (404.93, 2454.71, 19.93) in garage = TRUE
        Test point 2 (384.84, 2434.28, 19.93) in garage = TRUE

    Garage=amumis ORIG Type=1 OrigType=1 Pos=(-2114.42, -2462.27, 29.48) DirA=(0.78, -0.63), DirB=(0.63, 0.78)
        Left=-2114.42, Right=-2106.62, Front=-2466.37, Back=-2458.88, Top=32.35
        Test point 1 (-2110.52, -2462.63, 30.91) in garage = TRUE
        Test point 2 (-2113.01, -2462.12, 30.91) in garage = TRUE

    Garage=CEspray ORIG Type=5 OrigType=5 Pos=(715.81, -462.40, 14.96) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=715.81, Right=724.29, Front=-462.40, Back=-447.29, Top=21.44
        Test point 1 (720.05, -454.85, 18.20) in garage = TRUE
        Test point 2 (716.81, -461.40, 18.20) in garage = TRUE

    Garage=burbdoo ORIG Type=29 OrigType=29 Pos=(2227.60, 168.65, 26.46) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=2227.60, Right=2234.93, Front=168.65, Back=176.33, Top=29.46
        Test point 1 (2231.27, 172.49, 27.96) in garage = TRUE
        Test point 2 (2228.60, 169.65, 27.96) in garage = TRUE

    Garage=burbdo2 ORIG Type=26 OrigType=26 Pos=(783.16, -492.75, 16.34) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=783.16, Right=789.03, Front=-492.75, Back=-485.12, Top=19.34
        Test point 1 (786.09, -488.93, 17.84) in garage = TRUE
        Test point 2 (784.16, -491.75, 17.84) in garage = TRUE

 

Using this code

Spoiler
	CDebugLog::Trace("List of ORIGINAL garages:");
	for (int i = 0, max = CGarages__NumGarages; i < max; ++i)
	{
		auto* gp = &CGarages__Garages[i];
		CDebugLog::Trace("\tGarage=%s %s Type=%d OrigType=%d Pos=(%4.2f, %4.2f, %4.2f) "
			"DirA=(%4.2f, %4.2f), DirB=(%4.2f, %4.2f)",
			gp->Name, "ORIG", gp->Type, gp->OriginalType, gp->Position.x, gp->Position.y, gp->Position.z,
			gp->DirectionA.x, gp->DirectionA.y, gp->DirectionB.x, gp->DirectionB.y);
		CDebugLog::Trace("\t\tLeft=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Top=%4.2f",
			gp->Left, gp->Right, gp->Front, gp->Back, gp->TopZ);
		
		//Test if a test point is recognized in the garage
		RwV3D point;
		point.x = (gp->Left + gp->Right) / 2.0;
		point.y = (gp->Front + gp->Back) / 2.0;
		point.z = (gp->Position.z + gp->TopZ) / 2.0;
		bool pointInGarage = CGarage__IsPointWithinGarage(gp, 0, point);
		CDebugLog::Trace("\t\tTest point 1 (%4.2f, %4.2f, %4.2f) in garage = %s",
			point.x, point.y, point.z, (pointInGarage ? "TRUE" : "FALSE"));

		point.x = (gp->Position.x + gp->DirectionA.x + gp->DirectionB.x);
		point.y = (gp->Position.y + gp->DirectionA.y + gp->DirectionB.y);
		point.z = (gp->Position.z + gp->TopZ) / 2.0;
		pointInGarage = CGarage__IsPointWithinGarage(gp, 0, point);
		CDebugLog::Trace("\t\tTest point 2 (%4.2f, %4.2f, %4.2f) in garage = %s\n",
			point.x, point.y, point.z, (pointInGarage ? "TRUE" : "FALSE"));
	}

 

 

and the on information on  CUSTOM garages:

Spoiler

...

List of CUSTOM garages:
    Garage=army_wh GRGX Type=246 OrigType=5 Pos=(7426.54, -9738.08, 5.93) DirA=(-0.93, 0.37), DirB=(-0.38, -0.93)
        Left=7396.80, Right=7426.54, Front=-9765.58, Back=-9730.74, Top=12.13
        Test point 1 (7411.67, -9748.16, 9.03) in garage = TRUE
        Test point 2 (7425.23, -9738.64, 9.03) in garage = TRUE

    Garage=hai_pns GRGX Type=246 OrigType=6 Pos=(7367.37, -8358.41, 5.10) DirA=(0.88, -0.47), DirB=(-0.45, -0.89)
        Left=7363.98, Right=7377.25, Front=-8370.45, Back=-8358.41, Top=10.10
        Test point 1 (7370.62, -8364.43, 7.60) in garage = TRUE
        Test point 2 (7367.81, -8359.77, 7.60) in garage = TRUE

    Garage=dk_pns GRGX Type=246 OrigType=6 Pos=(7336.01, -9513.27, 5.89) DirA=(0.97, -0.26), DirB=(0.38, 0.92)
        Left=7336.01, Right=7350.81, Front=-9515.39, Back=-9496.96, Top=10.89
        Test point 1 (7343.41, -9506.17, 8.39) in garage = TRUE
        Test point 2 (7337.36, -9512.60, 8.39) in garage = TRUE

    Garage=wsh_pns GRGX Type=246 OrigType=6 Pos=(8242.06, -9504.80, 3.42) DirA=(-0.02, -1.00), DirB=(1.00, 0.09)
        Left=8241.95, Right=8252.68, Front=-9510.51, Back=-9503.81, Top=9.82
        Test point 1 (8247.31, -9507.16, 6.62) in garage = TRUE
        Test point 2 (8243.04, -9505.71, 6.62) in garage = TRUE

    Garage=nbe_pns GRGX Type=246 OrigType=6 Pos=(8574.44, -7821.57, 4.19) DirA=(0.31, 0.95), DirB=(-0.98, 0.20)
        Left=8563.91, Right=8576.17, Front=-7821.57, Back=-7814.01, Top=10.59
        Test point 1 (8570.04, -7817.79, 7.39) in garage = TRUE
        Test point 2 (8573.77, -7820.42, 7.39) in garage = TRUE

    Garage=8_bombs GRGX Type=246 OrigType=9 Pos=(7086.77, -9657.11, 5.40) DirA=(0.37, 0.93), DirB=(-0.92, 0.39)
        Left=7072.48, Right=7090.46, Front=-9657.11, Back=-9641.96, Top=11.80
        Test point 1 (7081.47, -9649.54, 8.60) in garage = TRUE
        Test point 2 (7086.22, -9655.80, 8.60) in garage = TRUE

    Garage=lh_stgr GRGX Type=246 OrigType=3 Pos=(7194.82, -8724.13, 5.33) DirA=(0.15, -0.99), DirB=(0.97, 0.23)
        Left=7194.82, Right=7211.92, Front=-8731.97, Back=-8720.41, Top=9.73
        Test point 1 (7203.37, -8726.19, 7.53) in garage = TRUE
        Test point 2 (7195.94, -8724.89, 7.53) in garage = TRUE

    Garage=wsh18sg GRGX Type=246 OrigType=3 Pos=(8277.09, -9734.19, 4.51) DirA=(-0.99, 0.16), DirB=(-0.06, -1.00)
        Left=8272.24, Right=8277.09, Front=-9740.85, Back=-9733.49, Top=8.21
        Test point 1 (8274.67, -9737.17, 6.36) in garage = TRUE
        Test point 2 (8276.04, -9735.03, 6.36) in garage = TRUE

    Garage=wsh18sg GRGX Type=246 OrigType=3 Pos=(8549.41, -7847.36, 7.22) DirA=(0.96, -0.29), DirB=(0.23, 0.97)
        Left=8549.41, Right=8555.44, Front=-7848.62, Back=-7839.51, Top=10.71
        Test point 1 (8552.42, -7844.06, 8.97) in garage = TRUE
        Test point 2 (8550.60, -7846.68, 8.97) in garage = TRUE

    Garage=linkssg GRGX Type=246 OrigType=3 Pos=(7434.97, -6935.03, 5.76) DirA=(0.93, 0.36), DirB=(-0.44, 0.90)
        Left=7430.64, Right=7440.58, Front=-6935.03, Back=-6924.09, Top=9.96
        Test point 1 (7435.61, -6929.56, 7.86) in garage = TRUE
        Test point 2 (7435.46, -6933.77, 7.86) in garage = TRUE

    Garage=hc_sg1 GRGX Type=246 OrigType=3 Pos=(7402.52, -6946.02, 5.45) DirA=(0.94, 0.35), DirB=(-0.38, 0.93)
        Left=7396.56, Right=7409.33, Front=-6946.02, Back=-6928.96, Top=10.65
        Test point 1 (7402.95, -6937.49, 8.06) in garage = TRUE
        Test point 2 (7403.08, -6944.75, 8.06) in garage = TRUE

    Garage=hc_sg2 GRGX Type=246 OrigType=3 Pos=(7425.88, -6937.96, 5.53) DirA=(0.97, 0.25), DirB=(-0.46, 0.89)
        Left=7421.45, Right=7431.69, Front=-6937.96, Back=-6927.77, Top=9.94
        Test point 1 (7426.57, -6932.87, 7.74) in garage = TRUE
        Test point 2 (7426.39, -6936.82, 7.74) in garage = TRUE

    Garage=hc_mcsg GRGX Type=246 OrigType=3 Pos=(7413.91, -6942.15, 5.54) DirA=(0.95, 0.32), DirB=(-0.33, 0.95)
        Left=7411.83, Right=7417.14, Front=-6942.15, Back=-6934.99, Top=8.34
        Test point 1 (7414.49, -6938.57, 6.94) in garage = TRUE
        Test point 2 (7414.53, -6940.88, 6.94) in garage = TRUE

    Garage=man_sgr GRGX Type=246 OrigType=3 Pos=(7896.80, -8789.68, 8.38) DirA=(-1.00, -0.00), DirB=(-0.01, -1.00)
        Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Top=11.38
        Test point 1 (7892.33, -8794.87, 9.88) in garage = TRUE
        Test point 2 (7895.79, -8790.68, 9.88) in garage = TRUE

    Garage=el_sank GRGX Type=246 OrigType=3 Pos=(8700.03, -7609.45, 5.20) DirA=(0.00, -1.00), DirB=(1.00, 0.02)
        Left=8700.03, Right=8707.82, Front=-7613.77, Back=-7609.26, Top=8.80
        Test point 1 (8703.92, -7611.51, 7.00) in garage = TRUE
        Test point 2 (8701.03, -7610.43, 7.00) in garage = TRUE

    Garage=lock_up GRGX Type=246 OrigType=3 Pos=(8715.38, -7910.03, 5.33) DirA=(-1.00, -0.00), DirB=(0.00, -1.00)
        Left=8699.19, Right=8715.39, Front=-7923.65, Back=-7910.03, Top=9.13
        Test point 1 (8707.29, -7916.84, 7.23) in garage = TRUE
        Test point 2 (8714.38, -7911.03, 7.23) in garage = TRUE

    Garage=sa_png GRGX Type=246 OrigType=6 Pos=(7248.66, -9091.62, 1.39) DirA=(-1.00, -0.01), DirB=(-0.00, -1.00)
        Left=7235.69, Right=7248.66, Front=-9107.79, Back=-9091.62, Top=5.79
        Test point 1 (7242.17, -9099.71, 3.59) in garage = TRUE
        Test point 2 (7247.66, -9092.63, 3.59) in garage = TRUE

    Garage=sa_sg1 GRGX Type=246 OrigType=3 Pos=(7225.06, -9071.68, 1.37) DirA=(0.99, 0.10), DirB=(0.01, 1.00)
        Left=7225.06, Right=7234.65, Front=-9071.68, Back=-9051.41, Top=5.77
        Test point 1 (7229.86, -9061.54, 3.57) in garage = TRUE
        Test point 2 (7226.06, -9070.58, 3.57) in garage = TRUE

    Garage=sa_sg2 GRGX Type=246 OrigType=3 Pos=(7236.80, -9070.87, 1.38) DirA=(1.00, 0.00), DirB=(0.01, 1.00)
        Left=7236.80, Right=7246.26, Front=-9070.87, Back=-9052.34, Top=5.58
        Test point 1 (7241.53, -9061.61, 3.48) in garage = TRUE
        Test point 2 (7237.81, -9069.87, 3.48) in garage = TRUE

    Garage=sa_sg3 GRGX Type=246 OrigType=3 Pos=(7248.17, -9070.78, 1.38) DirA=(1.00, 0.01), DirB=(0.00, 1.00)
        Left=7248.17, Right=7257.60, Front=-9070.78, Back=-9052.19, Top=5.58
        Test point 1 (7252.88, -9061.48, 3.48) in garage = TRUE
        Test point 2 (7249.17, -9069.77, 3.48) in garage = TRUE

    Garage=sa_sg4 GRGX Type=246 OrigType=3 Pos=(7258.89, -9070.76, 1.51) DirA=(1.00, 0.00), DirB=(0.00, 1.00)
        Left=7258.89, Right=7268.37, Front=-9070.76, Back=-9052.27, Top=5.71
        Test point 1 (7263.63, -9061.52, 3.61) in garage = TRUE
        Test point 2 (7259.89, -9069.76, 3.61) in garage = TRUE

    Garage=sa_sg5 GRGX Type=246 OrigType=3 Pos=(7283.75, -9091.73, 0.96) DirA=(-1.00, 0.01), DirB=(0.01, -1.00)
        Left=7271.69, Right=7283.90, Front=-9111.28, Back=-9091.66, Top=5.96
        Test point 1 (7277.79, -9101.47, 3.46) in garage = TRUE
        Test point 2 (7282.76, -9092.72, 3.46) in garage = TRUE

    Garage=pl_ie GRGX Type=246 OrigType=5 Pos=(9411.70, 8332.55, 12.25) DirA=(0.00, -1.00), DirB=(1.00, 0.00)
        Left=9411.70, Right=9437.57, Front=8314.27, Back=8332.62, Top=16.85
        Test point 1 (9424.63, 8323.45, 14.55) in garage = TRUE
        Test point 2 (9412.70, 8331.55, 14.55) in garage = TRUE

    Garage=svi_gr GRGX Type=246 OrigType=5 Pos=(6816.01, 9150.59, 58.15) DirA=(-1.00, 0.01), DirB=(0.00, -1.00)
        Left=6797.86, Right=6816.11, Front=9124.75, Back=9150.76, Top=62.35
        Test point 1 (6806.98, 9137.75, 60.25) in garage = TRUE
        Test point 2 (6815.01, 9149.60, 60.25) in garage = TRUE

    Garage=pl_bms GRGX Type=246 OrigType=9 Pos=(9199.39, 8900.36, 13.70) DirA=(-1.00, -0.01), DirB=(0.07, -1.00)
        Left=9194.25, Right=9200.13, Front=8889.47, Back=8900.36, Top=16.70
        Test point 1 (9197.19, 8894.92, 15.20) in garage = TRUE
        Test point 2 (9198.46, 8899.35, 15.20) in garage = TRUE

    Garage=si_bms GRGX Type=246 OrigType=7 Pos=(8291.04, 8425.99, 25.14) DirA=(0.08, -1.00), DirB=(1.00, 0.02)
        Left=8291.04, Right=8301.18, Front=8420.69, Back=8426.18, Top=28.62
        Test point 1 (8296.11, 8423.44, 26.88) in garage = TRUE
        Test point 2 (8292.12, 8425.01, 26.88) in garage = TRUE

    Garage=sv_bms GRGX Type=246 OrigType=9 Pos=(6834.54, 9058.79, 57.57) DirA=(-1.00, 0.00), DirB=(0.06, -1.00)
        Left=6830.84, Right=6835.04, Front=9049.74, Back=9058.80, Top=61.77
        Test point 1 (6832.94, 9054.27, 59.67) in garage = TRUE
        Test point 2 (6833.60, 9057.79, 59.67) in garage = TRUE

    Garage=salv_gr GRGX Type=246 OrigType=3 Pos=(9343.52, 8820.76, 49.65) DirA=(-0.04, -1.00), DirB=(1.00, -0.00)
        Left=9343.24, Right=9357.38, Front=8812.77, Back=8820.76, Top=53.85
        Test point 1 (9350.31, 8816.77, 51.75) in garage = TRUE
        Test point 2 (9344.48, 8819.76, 51.75) in garage = TRUE

    Garage=pl_hsg GRGX Type=246 OrigType=3 Pos=(8805.94, 8689.28, 7.99) DirA=(-0.02, -1.00), DirB=(1.00, 0.00)
        Left=8805.85, Right=8812.50, Front=8684.90, Back=8689.29, Top=10.99
        Test point 1 (8809.17, 8687.10, 9.49) in garage = TRUE
        Test point 2 (8806.92, 8688.28, 9.49) in garage = TRUE

    Garage=secu_gr GRGX Type=246 OrigType=4 Pos=(9356.46, 8194.40, 10.90) DirA=(1.00, 0.06), DirB=(0.00, 1.00)
        Left=9356.46, Right=9365.00, Front=8194.40, Back=8218.42, Top=17.10
        Test point 1 (9360.73, 8206.41, 14.00) in garage = TRUE
        Test point 2 (9357.46, 8195.46, 14.00) in garage = TRUE

    Garage=lui_lgr GRGX Type=246 OrigType=4 Pos=(9005.47, 8588.68, 12.58) DirA=(-1.00, 0.03), DirB=(0.11, -0.99)
        Left=9002.33, Right=9006.27, Front=8581.69, Back=8588.77, Top=15.98
        Test point 1 (9004.30, 8585.23, 14.28) in garage = TRUE
        Test point 2 (9004.58, 8587.71, 14.28) in garage = TRUE

    Garage=sih_gr GRGX Type=246 OrigType=4 Pos=(8030.92, 8524.80, 14.95) DirA=(-1.00, -0.00), DirB=(-0.01, -1.00)
        Left=8022.33, Right=8030.92, Front=8513.22, Back=8524.80, Top=19.45
        Test point 1 (8026.63, 8519.01, 17.20) in garage = TRUE
        Test point 2 (8029.91, 8523.79, 17.20) in garage = TRUE

    Garage=king_gr GRGX Type=246 OrigType=4 Pos=(8177.83, 8206.01, 26.92) DirA=(-1.00, -0.05), DirB=(0.02, -1.00)
        Left=8173.28, Right=8178.02, Front=8196.93, Back=8206.01, Top=29.42
        Test point 1 (8175.65, 8201.47, 28.17) in garage = TRUE
        Test point 2 (8176.85, 8204.96, 28.17) in garage = TRUE

    Garage=ch1_gr GRGX Type=246 OrigType=3 Pos=(7969.13, 8682.90, 15.15) DirA=(1.00, -0.01), DirB=(0.01, 1.00)
        Left=7969.13, Right=7974.96, Front=8682.84, Back=8692.27, Top=18.73
        Test point 1 (7972.04, 8687.55, 16.94) in garage = TRUE
        Test point 2 (7970.14, 8683.89, 16.94) in garage = TRUE

    Garage=ch2_gr GRGX Type=246 OrigType=3 Pos=(7978.47, 8682.97, 15.15) DirA=(1.00, -0.02), DirB=(0.00, 1.00)
        Left=7978.47, Right=7984.17, Front=8682.83, Back=8692.22, Top=18.65
        Test point 1 (7981.32, 8687.53, 16.90) in garage = TRUE
        Test point 2 (7979.47, 8683.95, 16.90) in garage = TRUE

    Garage=ch3_gr GRGX Type=246 OrigType=3 Pos=(7946.15, 8645.16, 15.16) DirA=(-0.02, 1.00), DirB=(-1.00, -0.00)
        Left=7939.44, Right=7946.15, Front=8645.14, Back=8652.77, Top=18.86
        Test point 1 (7942.79, 8648.96, 17.01) in garage = TRUE
        Test point 2 (7945.13, 8646.16, 17.01) in garage = TRUE

    Garage=ch4_gr GRGX Type=246 OrigType=3 Pos=(7966.83, 8622.99, 15.20) DirA=(-1.00, 0.00), DirB=(-0.00, -1.00)
        Left=7958.07, Right=7966.83, Front=8612.03, Back=8623.00, Top=19.20
        Test point 1 (7962.45, 8617.52, 17.20) in garage = TRUE
        Test point 2 (7965.83, 8621.99, 17.20) in garage = TRUE

    Garage=ch5_gr GRGX Type=246 OrigType=3 Pos=(7946.10, 8656.45, 15.16) DirA=(-0.00, 1.00), DirB=(-1.00, 0.01)
        Left=7939.69, Right=7946.10, Front=8656.45, Back=8663.27, Top=18.96
        Test point 1 (7942.90, 8659.86, 17.06) in garage = TRUE
        Test point 2 (7945.10, 8657.46, 17.06) in garage = TRUE

    Garage=ch6_gr GRGX Type=246 OrigType=3 Pos=(7975.64, 8622.92, 15.20) DirA=(-1.00, -0.02), DirB=(-0.00, -1.00)
        Left=7968.02, Right=7975.64, Front=8612.04, Back=8622.92, Top=19.20
        Test point 1 (7971.83, 8617.48, 17.20) in garage = TRUE
        Test point 2 (7974.64, 8621.90, 17.20) in garage = TRUE

    Garage=ken_gr GRGX Type=246 OrigType=4 Pos=(8291.16, 8497.07, 25.11) DirA=(-0.02, -1.00), DirB=(1.00, 0.00)
        Left=8291.03, Right=8298.94, Front=8489.45, Back=8497.07, Top=28.95
        Test point 1 (8294.99, 8493.26, 27.03) in garage = TRUE
        Test point 2 (8292.14, 8496.07, 27.03) in garage = TRUE

    Garage=ray_gr GRGX Type=246 OrigType=4 Pos=(8150.40, 8007.10, 20.99) DirA=(-0.01, -1.00), DirB=(1.00, 0.00)
        Left=8150.34, Right=8160.80, Front=8000.13, Back=8007.10, Top=24.39
        Test point 1 (8155.57, 8003.62, 22.69) in garage = TRUE
        Test point 2 (8151.39, 8006.10, 22.69) in garage = TRUE

    Garage=mcaf_gr GRGX Type=246 OrigType=3 Pos=(8291.31, 8565.11, 20.27) DirA=(-0.03, -1.00), DirB=(1.00, 0.01)
        Left=8291.15, Right=8299.88, Front=8559.64, Back=8565.18, Top=23.63
        Test point 1 (8295.52, 8562.41, 21.95) in garage = TRUE
        Test point 2 (8292.28, 8564.12, 21.95) in garage = TRUE

    Garage=svl_gr GRGX Type=246 OrigType=3 Pos=(7252.54, 8953.69, 17.85) DirA=(-0.08, 1.00), DirB=(-1.00, -0.05)
        Left=7244.47, Right=7252.54, Front=8953.34, Back=8958.71, Top=22.95
        Test point 1 (7248.50, 8956.03, 20.40) in garage = TRUE
        Test point 2 (7251.46, 8954.64, 20.40) in garage = TRUE

    Garage=svc_gr GRGX Type=246 OrigType=3 Pos=(7252.30, 8959.15, 17.95) DirA=(0.01, 1.00), DirB=(-0.99, -0.10)
        Left=7244.62, Right=7252.33, Front=8958.36, Back=8963.67, Top=22.95
        Test point 1 (7248.48, 8961.02, 20.45) in garage = TRUE
        Test point 2 (7251.31, 8960.05, 20.45) in garage = TRUE

    Garage=svr_gr GRGX Type=246 OrigType=3 Pos=(7252.31, 8964.35, 17.95) DirA=(0.05, 1.00), DirB=(-1.00, -0.06)
        Left=7244.72, Right=7252.55, Front=8963.92, Back=8968.95, Top=22.95
        Test point 1 (7248.63, 8966.44, 20.45) in garage = TRUE
        Test point 2 (7251.36, 8965.29, 20.45) in garage = TRUE

    Garage=dice_gr GRGX Type=246 OrigType=4 Pos=(9128.94, 8758.24, 22.62) DirA=(-0.03, -1.00), DirB=(0.99, 0.11)
        Left=9128.82, Right=9135.59, Front=8754.73, Back=8758.99, Top=26.08
        Test point 1 (9132.21, 8756.86, 24.35) in garage = TRUE
        Test point 2 (9129.90, 8757.35, 24.35) in garage = TRUE

    Garage=dpdo_gr GRGX Type=246 OrigType=4 Pos=(7072.33, 8834.79, 32.85) DirA=(-0.02, -1.00), DirB=(1.00, -0.00)
        Left=7072.20, Right=7090.34, Front=8827.97, Back=8834.79, Top=37.85
        Test point 1 (7081.27, 8831.38, 35.35) in garage = TRUE
        Test point 2 (7073.31, 8833.79, 35.35) in garage = TRUE

    Garage=dons_gr GRGX Type=246 OrigType=4 Pos=(6877.16, 8923.64, 39.92) DirA=(0.03, 1.00), DirB=(-1.00, -0.08)
        Left=6865.73, Right=6877.34, Front=8922.71, Back=8930.05, Top=44.52
        Test point 1 (6871.54, 8926.38, 42.22) in garage = TRUE
        Test point 2 (6876.19, 8924.56, 42.22) in garage = TRUE

    Garage=ptr_gr GRGX Type=246 OrigType=4 Pos=(9268.27, 8683.96, 48.75) DirA=(0.02, 1.00), DirB=(-1.00, 0.00)
        Left=9261.71, Right=9268.35, Front=8683.96, Back=8688.79, Top=50.75
        Test point 1 (9265.03, 8686.38, 49.75) in garage = TRUE
        Test point 2 (9267.29, 8684.96, 49.75) in garage = TRUE

    Garage=pan_gr GRGX Type=246 OrigType=4 Pos=(9000.36, 8423.45, 12.45) DirA=(0.00, 1.00), DirB=(-1.00, -0.01)
        Left=8993.65, Right=9000.38, Front=8423.40, Back=8428.27, Top=15.65
        Test point 1 (8997.02, 8425.83, 14.05) in garage = TRUE
        Test point 2 (8999.36, 8424.44, 14.05) in garage = TRUE

    Garage=lcss_gr GRGX Type=246 OrigType=4 Pos=(8209.91, 8569.28, 24.97) DirA=(1.00, 0.02), DirB=(-0.03, 1.00)
        Left=8209.69, Right=8218.16, Front=8569.28, Back=8577.82, Top=28.57
        Test point 1 (8213.93, 8573.55, 26.77) in garage = TRUE
        Test point 2 (8210.88, 8570.30, 26.77) in garage = TRUE

    Garage=lm_gr GRGX Type=246 OrigType=4 Pos=(8007.83, 7440.20, 22.80) DirA=(-0.03, -1.00), DirB=(1.00, -0.01)
        Left=8007.57, Right=8035.30, Front=7431.11, Back=7440.20, Top=26.80
        Test point 1 (8021.43, 7435.66, 24.80) in garage = TRUE
        Test point 2 (8008.80, 7439.19, 24.80) in garage = TRUE

    Garage=pl_pns GRGX Type=246 OrigType=6 Pos=(8843.41, 8645.90, 10.10) DirA=(-1.00, -0.01), DirB=(0.02, -1.00)
        Left=8837.39, Right=8843.62, Front=8632.52, Back=8645.90, Top=15.30
        Test point 1 (8840.50, 8639.21, 12.70) in garage = TRUE
        Test point 2 (8842.43, 8644.89, 12.70) in garage = TRUE

    Garage=si_pns GRGX Type=246 OrigType=6 Pos=(8291.07, 8508.25, 25.46) DirA=(0.01, -1.00), DirB=(1.00, 0.00)
        Left=8291.07, Right=8300.54, Front=8502.59, Back=8508.27, Top=28.96
        Test point 1 (8295.80, 8505.43, 27.21) in garage = TRUE
        Test point 2 (8292.08, 8507.25, 27.21) in garage = TRUE

    Garage=sv_pns GRGX Type=246 OrigType=6 Pos=(6776.36, 9032.49, 57.77) DirA=(-0.07, 1.00), DirB=(-1.00, -0.02)
        Left=6767.02, Right=6776.36, Front=9032.34, Back=9037.29, Top=61.97
        Test point 1 (6771.69, 9034.81, 59.87) in garage = TRUE
        Test point 2 (6775.29, 9033.47, 59.87) in garage = TRUE

 

Using this code

Spoiler
	CDebugLog::Trace("List of CUSTOM garages:");
	for (CGarageBase* gp : Garages()) {
		//CDebugLog::Trace("\t %s", gp->Name);
		CDebugLog::Trace("\tGarage=%s %s Type=%d OrigType=%d Pos=(%4.2f, %4.2f, %4.2f) "
					"DirA=(%4.2f, %4.2f), DirB=(%4.2f, %4.2f)",
					gp->Name, (gp->IsGRGX()? "GRGX": "ORIG"), gp->Type, gp->OriginalType, gp->Position.x, gp->Position.y, gp->Position.z,
					gp->DirectionA.x, gp->DirectionA.y, gp->DirectionB.x, gp->DirectionB.y);
		CDebugLog::Trace("\t\tLeft=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Top=%4.2f",
					gp->Left, gp->Right, gp->Front, gp->Back, gp->TopZ);
		//Test if a test point is recognized in the garage
		RwV3D point;
		point.x = (gp->Left + gp->Right) / 2.0;
		point.y = (gp->Front + gp->Back) / 2.0;
		point.z = (gp->Position.z + gp->TopZ) / 2.0;
		bool pointInGarage = gp->IsPointWithinGarage(point);
		CDebugLog::Trace("\t\tTest point 1 (%4.2f, %4.2f, %4.2f) in garage = %s",
			point.x, point.y, point.z, (pointInGarage?"TRUE":"FALSE") );

		point.x = (gp->Position.x + gp->DirectionA.x + gp->DirectionB.x);
		point.y = (gp->Position.y + gp->DirectionA.y + gp->DirectionB.y);
		point.z = (gp->Position.z + gp->TopZ) / 2.0;
		pointInGarage = gp->IsPointWithinGarage(point);
		CDebugLog::Trace("\t\tTest point 2 (%4.2f, %4.2f, %4.2f) in garage = %s\n",
			point.x, point.y, point.z, (pointInGarage ? "TRUE" : "FALSE"));
	}

 

 

 

 

 

Edited by goodidea82
Link to comment
Share on other sites

Solved. The problem is indeed the definition of the garage-z coordinates in SAxVCxLC. When changing the z-coordinates in the definition, then  IsPointWithinGarage(vehicleCoords) evaluates to true, and the car is saved in the garage. 

 

I wrote this code:

Spoiler
		const RwV3D vehicleCoords = GetCoords(&pVehicle->__parent.__parent);
		bool pointInGarage = this->IsPointWithinGarage(vehicleCoords);
		CDebugLog::Trace("\tGarage=%s. Car (%4.2f, %4.2f, %4.2f) Left=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Pos.z=%4.2f, Top=%4.2f, pointInGarage=%d", 
			this->Name, vehicleCoords.x, vehicleCoords.y, vehicleCoords.z, this->Left, this->Right, this->Front, this->Back, this->Position.z, this->TopZ, pointInGarage);
		if (this->Left <= vehicleCoords.x && vehicleCoords.x <= this->Right &&
			this->Front <= vehicleCoords.y && vehicleCoords.y <= this->Back) {
			CDebugLog::Trace("\tIS INSIDE Left,Right,Front,Back");
			if (Position.z <= vehicleCoords.z && vehicleCoords.z <= this->TopZ) {
				CDebugLog::Trace("\tIS INSIDE Pos.z, TopZ");
			}
			else {
				CDebugLog::Trace("\tIS NOT INSIDE Pos.z, TopZ !");
			}
			CGarageBase* gp = this;
			CDebugLog::Trace("\tGarage=%s %s Type=%d OrigType=%d Pos=(%4.2f, %4.2f, %4.2f) "
				"DirA=(%4.2f, %4.2f), DirB=(%4.2f, %4.2f)",
				gp->Name, (gp->IsGRGX() ? "GRGX" : "ORIG"), gp->Type, gp->OriginalType, gp->Position.x, gp->Position.y, gp->Position.z,
				gp->DirectionA.x, gp->DirectionA.y, gp->DirectionB.x, gp->DirectionB.y);
			//CDebugLog::Trace("\t\tLeft=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Top=%4.2f",gp->Left, gp->Right, gp->Front, gp->Back, gp->TopZ);
		}

 

 

and got this output:

Spoiler

CCustomGarage::StoreAndRemoveCarsForThisGarage(...)
    Garage=man_sgr. Car (8026.41, -8726.04, 5.86) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7990.90, -8653.99, 5.92) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7997.96, -8705.68, 6.26) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7859.00, -8823.00, 35.23) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7855.30, -8783.70, 7.56) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7871.01, -8882.09, 5.43) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7891.31, -8794.69, 7.45) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    IS INSIDE Left,Right,Front,Back
    IS NOT INSIDE Pos.z, TopZ !
    Garage=man_sgr GRGX Type=246 OrigType=3 Pos=(7896.80, -8789.68, 8.38) DirA=(-1.00, -0.00), DirB=(-0.01, -1.00)
    Garage=man_sgr. Car (7998.63, -8727.40, 5.77) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7899.19, -8784.90, 7.34) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0

 

I will soon upload an updated version of grgx which outputs in the log when a car in withing the xy-boundaries of the garage, and if yes it logs if the z-boundaries are satisfied. This way it should be easy to find and fix the garage coordinates in the IPL file.

  • Like 1
Link to comment
Share on other sites

21 minutes ago, goodidea82 said:

Solved. The problem is indeed the definition of the garage-z coordinates in SAxVCxLC. When changing the z-coordinates in the definition, then  IsPointWithinGarage(vehicleCoords) evaluates to true, and the car is saved in the garage. 

 

I wrote this code:

  Reveal hidden contents

		const RwV3D vehicleCoords = GetCoords(&pVehicle->__parent.__parent);
		bool pointInGarage = this->IsPointWithinGarage(vehicleCoords);
		CDebugLog::Trace("\tGarage=%s. Car (%4.2f, %4.2f, %4.2f) Left=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Pos.z=%4.2f, Top=%4.2f, pointInGarage=%d", 
			this->Name, vehicleCoords.x, vehicleCoords.y, vehicleCoords.z, this->Left, this->Right, this->Front, this->Back, this->Position.z, this->TopZ, pointInGarage);
		if (this->Left <= vehicleCoords.x && vehicleCoords.x <= this->Right &&
			this->Front <= vehicleCoords.y && vehicleCoords.y <= this->Back) {
			CDebugLog::Trace("\tIS INSIDE Left,Right,Front,Back");
			if (Position.z <= vehicleCoords.z && vehicleCoords.z <= this->TopZ) {
				CDebugLog::Trace("\tIS INSIDE Pos.z, TopZ");
			}
			else {
				CDebugLog::Trace("\tIS NOT INSIDE Pos.z, TopZ !");
			}
			CGarageBase* gp = this;
			CDebugLog::Trace("\tGarage=%s %s Type=%d OrigType=%d Pos=(%4.2f, %4.2f, %4.2f) "
				"DirA=(%4.2f, %4.2f), DirB=(%4.2f, %4.2f)",
				gp->Name, (gp->IsGRGX() ? "GRGX" : "ORIG"), gp->Type, gp->OriginalType, gp->Position.x, gp->Position.y, gp->Position.z,
				gp->DirectionA.x, gp->DirectionA.y, gp->DirectionB.x, gp->DirectionB.y);
			//CDebugLog::Trace("\t\tLeft=%4.2f, Right=%4.2f, Front=%4.2f, Back=%4.2f, Top=%4.2f",gp->Left, gp->Right, gp->Front, gp->Back, gp->TopZ);
		}

 

 

and got this output:

  Reveal hidden contents

CCustomGarage::StoreAndRemoveCarsForThisGarage(...)
    Garage=man_sgr. Car (8026.41, -8726.04, 5.86) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7990.90, -8653.99, 5.92) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7997.96, -8705.68, 6.26) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7859.00, -8823.00, 35.23) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7855.30, -8783.70, 7.56) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7871.01, -8882.09, 5.43) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7891.31, -8794.69, 7.45) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    IS INSIDE Left,Right,Front,Back
    IS NOT INSIDE Pos.z, TopZ !
    Garage=man_sgr GRGX Type=246 OrigType=3 Pos=(7896.80, -8789.68, 8.38) DirA=(-1.00, -0.00), DirB=(-0.01, -1.00)
    Garage=man_sgr. Car (7998.63, -8727.40, 5.77) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    Garage=man_sgr. Car (7899.19, -8784.90, 7.34) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0

 

I will soon upload an updated version of grgx which outputs in the log when a car in withing the xy-boundaries of the garage, and if yes it logs if the z-boundaries are satisfied. This way it should be easy to find and fix the garage coordinates in the IPL file.

So what I need to do?I mean did i do something wrong with the co-ordinates or something?

Link to comment
Share on other sites

@Inan-AhammadAll the time I have tested only the garage in the Diaz mansion (man_sgr). I don't know who defined it, I only know that the z-coordinates of the garage are wrong and need to be fixed somehow.

 

I have just uploaded the new version of grgx to both GitHub repositories: to GarageExtender and to SAxVCxLC. So just do a git pull.

 

The new version is compiled using release config (solving the issue that @HeicoDE had). And the new version (compiled for release) produces a grgx.log file wich additional information for garages. In particular, when a car is in the XY-bounds of the garage, but not in the Z-bounds, then the log contains something like this:

Spoiler

CCustomGarage::StoreAndRemoveCarsForThisGarage(...)

    Garage=man_sgr. Car (7890.25, -8794.26, 7.45) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    WARNING: Car.xy is inside the XY-garage bounds Left, Right, Front, Back, but Car.z IS NOT INSIDE Pos.z, TopZ ! Perhaps the garage coordinates must be fixed.

 

One thing: it is not required to create a savefile to get this warning! It is sufficient to place a car in the garage and wait until the door has closed. This is not enough to save the car, but it is enough to generate the warning. So basically all the custom grgx garages must be tested and fixed where needed.

Edited by goodidea82
Link to comment
Share on other sites

40 minutes ago, goodidea82 said:

@Inan-AhammadAll the time I have tested only the garage in the Diaz mansion (man_sgr). I don't know who defined it, I only know that the z-coordinates of the garage are wrong and need to be fixed somehow.

 

I have just uploaded the new version of grgx to both GitHub repositories: to GarageExtender and to SAxVCxLC. So just do a git pull.

 

The new version is compiled using release config (solving the issue that @HeicoDE had). And the new version (compiled for release) produces a grgx.log file wich additional information for garages. In particular, when a car is in the XY-bounds of the garage, but not in the Z-bounds, then the log contains something like this:

  Reveal hidden contents

CCustomGarage::StoreAndRemoveCarsForThisGarage(...)

    Garage=man_sgr. Car (7890.25, -8794.26, 7.45) Left=7887.86, Right=7896.80, Front=-8800.06, Back=-8789.68, Pos.z=8.38, Top=11.38, pointInGarage=0
    WARNING: Car.xy is inside the XY-garage bounds Left, Right, Front, Back, but Car.z IS NOT INSIDE Pos.z, TopZ ! Perhaps the garage coordinates must be fixed.

 

One thing: it is not required to create a savefile to get this warning! It is sufficient to place a car in the garage and wait until the door has closed. This is not enough to save the car, but it is enough to generate the warning. So basically all the custom grgx garages must be tested and fixed where needed.

Ok.So I'll be lowering the z co ordinates a bit and testing the garages.

Quote

All the time I have tested only the garage in the Diaz mansion (man_sgr). I don't know who defined it, I only know that the z-coordinates of the garage are wrong and need to be fixed somehow.

I did the garages myself.So theres no doubt that its my fault.I'll look at it again.

Edited by Inan-Ahammad
Link to comment
Share on other sites

@Inan-Ahammad: When lowering the coordinates, make sure that the topZ coordinate leaves enough space to the top.

Let's move SAxVCxLC specific discussions back to SAxVCxLC.

 

 

Edited by goodidea82
Link to comment
Share on other sites

  • 2 months later...

Why grgx not works with EU version of game, it works fine when i try it on the US version, the given example in the package and LS Property Pack mod works smoothly under the US version of game but it crashes game when i start a new game and load bar is completed the game crashes under EU version.

Link to comment
Share on other sites

3 minutes ago, Namaloom said:

Why grgx not works with EU version of game, it works fine when i try it on the US version, the given example in the package and LS Property Pack mod works smoothly under the US version of game but it crashes game when i start a new game and load bar is completed the game crashes under EU version.

probably because the memory addresses aren't the same.

Link to comment
Share on other sites

13 minutes ago, Grinch_ said:

probably because the memory addresses aren't the same.

Heres the exact error, So is there anything that i can do to make it work with EU Version? because US Version makes the wrecks disappear quickly for special vehicles in mission House Party so i cant play in US Version,

http://prntscr.com/lfbgrm

Link to comment
Share on other sites

3 hours ago, Namaloom said:

So is there anything that i can do to make it work with EU Version?

If you don't know C++ well.Then no. 

Link to comment
Share on other sites

2 hours ago, Grinch_ said:

If you don't know C++ well.Then no. 

i know cpp, can you guide me plz what to change in the code?

Link to comment
Share on other sites

On 12/3/2012 at 2:58 AM, LINK/2012 said:

Garage eXtender

Garage eXtender (GRGX) is a plugin for GTA San Andreas that adds more options and more garage slots into the game.

San Andreas have 50 slots for garages, but those slots are already used by default, so no mapper can create custom garages for their maps, that's sad...
This plugin solves this and also add more possibilities into garage system, like parking garages (as in GTA IV), new door movement styles, more garage opcodes...

This plugin can be used by scripters and mappers. Wait, scripters? We can't create garages by script! Well, with grgx you can! It restores the create_garage opcode from III\VC, and other opcodes too, try it.

Why you dont modify it to work with EU version of the game plz? it is the only garage extension that is worth adding in gta unlike nubbles 80 car park or save 256 cars as they dont save the special immunities of the vehicle like yours.

Link to comment
Share on other sites

  • 1 year later...
Chicobanana

I don't know if it is too late to mention this and try to solve it, but I'm having some trouble with this mod:

I'm trying to use it only to increase the limit of 4 vehicles we can store at the hangar on the airfield. The "num_cars" parameter, however, doesn't seem to work if set on  any number above 4 (or -1). The hangar still only saves up to 4 vehicles.

 

What I did was replace the line for the hangar garage on the IPL file to: 383.843, 2433.28, 15.166, 426.012, 2433.28, 383.843, 2476.13, 24.6886, 0, -1, dhangar, 7, 3, 24

The coordinates weren't altered, so I don't think the z coordinate problem mentioned above is an issue here, the door opening system behaves accordingly as I alter it's parameter, and even the limit of vehicles works fine if set on 4 or less. It just doesn't save more than 4 vehicles even if it's parameter is set on any number above it. The log I got from using the garage with the code above on the IPL file was:

 

 

Spoiler

Log started
 Compiled date and time Aug 26 2018 @ 12:41:12
 with compiler _MSC_VER = 1900
UNICODE encoding is NOT used.
_CPPRTTI
_DLL
_MSC_BUILD 1
_MSVC_LANG 201402
_NATIVE_WCHAR_T_DEFINED
_WCHAR_T_DEFINED
_WIN32
CStreaming::aInfoForModel=8E4CC0
ARRAY_ModelInfo (*(DWORD**)(0x40122D))=A9B0C8
ARRAY_ModelInfo (*(DWORD**)(0x4C5538+3))=A9B0C8
CGarages::Patch() with is HOODLUM: true
Parsing grge line: 1640.37  -1520.07  12.5118  1647.6  -1520.07  1640.37  -1512.45  18.1245  5  1  mul_lan  
    Is GRGX: false
Parsing grge line: 1523.92  -1653.23  4.72837  1556.92  -1653.23  1523.92  -1633.23  12.2284  5  33  imp_la   
    Is GRGX: false
Parsing grge line: 1873.97  -2096.55  12.487  1880.88  -2096.55  1873.97  -2087.62  15.7681  5  1  duf_LAS  
    Is GRGX: false
Parsing grge line: 1843.91  -1858.8  12.3645  1857.1  -1858.8  1843.91  -1853.79  16.1118  1  2  lasbomb  
    Is GRGX: false
Parsing grge line: 1809.46  -2150.67  12.4283  1809.46  -2142.75  1798.82  -2150.67  16.4347  1  1  modgLAS  
    Is GRGX: false
Parsing grge line: 1694.8  -2088.7  12.3636  1703  -2088.7  1694.8  -2077.48  16.2236  5  31  carlas1  
    Is GRGX: false
Parsing grge line: 2738.4  -2012.55  12.5759  2743.78  -2012.55  2738.4  -2004.41  17.8299  1  1  burg_lk  
    Is GRGX: false
Parsing grge line: 2640.78  -2049.99  12.543  2648.96  -2049.99  2640.78  -2039.55  16.206  1  1  modlast  
    Is GRGX: false
Parsing grge line: 2056.6  -1835.9  12.5443  2071.3  -1835.9  2056.6  -1826.97  18.5443  1  5  sprLAe  
    Is GRGX: false
Parsing grge line: 2502.31  -1699.36  12.4323  2508.61  -1699.36  2502.31  -1691.01  16.5666  1  16  cjsafe  
    Is GRGX: false
Parsing grge line: 1038.24  -1025.67  31.1027  1068.35  -1025.67  1038.24  -995.044  39.1027  1  1  bodLAwN  
    Is GRGX: false
Parsing grge line: 1021.81  -1018.71  30.9081  1021.81  -1029.53  1027.93  -1018.71  36.9081  1  5  sprLAe  
    Is GRGX: false
Parsing grge line: 491.103  -1747.55  9.45516  492.717  -1735.77  481.972  -1746.3  17.565  1  5  spLAw2  
    Is GRGX: false
Parsing grge line: 319.326  -1768.93  3.35686  325.625  -1768.93  319.326  -1759.57  7.49114  1  17  beacsv  
    Is GRGX: false
Parsing grge line: 1352.58  -636.657  108.135  1359.02  -634.418  1349.56  -627.962  113.135  1  32  CEsafe1  
    Is GRGX: false
Parsing grge line: -2728.53  212.295  3.45112  -2716.36  212.295  -2728.53  222.669  8.68705  1  5  mds1SFS  
    Is GRGX: false
Parsing grge line: -2735.46  60.7331  3.07005  -2725.82  60.7331  -2735.46  72.8828  7.92155  1  1  tbon  
    Is GRGX: false
Parsing grge line: -2454.02  -131.556  25.0886  -2442.38  -131.556  -2454.02  -113.935  29.8006  1  42  svgsfs1  
    Is GRGX: false
Parsing grge line: -1941.04  251.714  33.4274  -1941.04  239.541  -1930.66  251.714  38.6634  1  1  mdsSFSe  
    Is GRGX: false
Parsing grge line: -1908.93  292.353  40.0413  -1908.93  277.989  -1900.11  292.353  45.539  1  5  sprsfse  
    Is GRGX: false
Parsing grge line: -2112.48  -21.214  34.303  -2102.48  -21.214  -2112.48  -11.214  40.303  1  1  brgSFSE  
    Is GRGX: false
Parsing grge line: -2043.1  118.609  27.821  -2021.91  118.609  -2043.1  129.609  32.821  1  41  LCKSfse  
    Is GRGX: false
Parsing grge line: -2057.35  150.803  27.8286  -2038.91  150.803  -2057.35  182.876  33.2286  1  1  hbgdSFS  
    Is GRGX: false
Parsing grge line: -1694.78  1033.15  44.1937  -1681.59  1033.15  -1694.78  1038.16  47.941  1  2    
    Is GRGX: false
Parsing grge line: -1794.15  1429.69  4.37321  -1787.18  1429.69  -1794.15  1441.37  14.3732  1  1    
    Is GRGX: false
Parsing grge line: -2171.43  649.416  49.8742  -2161.79  649.416  -2171.43  661.778  58.1902  3  1  fdorsfe  
    Is GRGX: false
Parsing grge line: -1790.97  1209.71  23.763  -1782.58  1209.71  -1790.97  1221.46  28.963  1  1  michdr  
    Is GRGX: false
Parsing grge line: -2108.92  886.553  75.566  -2101.36  886.553  -2108.92  896.807  80.166  7  39  sav1sfe  
    Is GRGX: false
Parsing grge line: -1652.78  647.502  -6.04924  -1617.92  647.502  -1652.78  671.973  0.713446  4  34  imp_sf  
    Is GRGX: false
Parsing grge line: -2430.13  1013.71  49.3413  -2421.2  1013.71  -2430.13  1027.76  55.3413  1  5  sprsfw  
    Is GRGX: false
Parsing grge line: -2699.12  821.489  49.0042  -2692.9  821.489  -2699.12  831.208  53.653  1  40  sav1sfw  
    Is GRGX: false
Parsing grge line: 2218.06  2448.06  -8.43807  2234.47  2448.06  2218.06  2467.56  -1.5463  5  35  imp_lv  
    Is GRGX: false
Parsing grge line: 1550.98  1155.36  8.97329  1621.82  1155.36  1550.98  1224.03  29.8005  4  44  vgshngr  
    Is GRGX: false
Parsing grge line: 2602.6  1438.84  9.8337  2616.4  1438.84  2602.6  1462.11  15.4891  1  1  vgElock  
    Is GRGX: false
Parsing grge line: 2389.6  1483.26  9.81843  2398.11  1483.26  2389.6  1497.84  15.6841  5  5  timy1  
    Is GRGX: false
Parsing grge line: 2382.28  1044  9.8337  2391.14  1044  2382.28  1059.73  13.9338  1  1  vEcmod  
    Is GRGX: false
Parsing grge line: 2449.5  695.018  10.4742  2458.31  695.018  2449.5  700.227  12.9155  1  18  vEsvgrg  
    Is GRGX: false
Parsing grge line: 2002.96  2303.72  9.61706  2010.36  2303.72  2002.96  2317.59  13.9914  1  2  blob2  
    Is GRGX: false
Parsing grge line: 1968.23  2157.88  9.59696  1983.32  2157.88  1968.23  2167.03  16.2367  1  5  blob1  
    Is GRGX: false
Parsing grge line: 1408.65  1899.52  10.115  1417.55  1899.52  1408.65  1904.91  13.1693  1  30  blob6  
    Is GRGX: false
Parsing grge line: 1269.2  2525.14  9.80013  1278.72  2525.14  1269.2  2534.49  12.9784  1  27  blob69  
    Is GRGX: false
Parsing grge line: 929.554  2008.59  10.115  938.452  2008.59  929.554  2013.99  13.1693  1  28  blob7  
    Is GRGX: false
Parsing grge line: -1424.11  2576.61  54.8156  -1416.85  2576.61  -1424.11  2590.84  60.8747  1  5  CNspray  
    Is GRGX: false
Parsing grge line: -103.636  1112.42  18.7017  -96.3613  1112.42  -103.636  1125.79  24.5489  1  5  CN2spry  
    Is GRGX: false
Parsing grge line: -364.439  1194.37  18.597  -356.214  1194.37  -364.439  1202.97  22.3812  1  24  cn2gar1  
    Is GRGX: false
Parsing grge line: 430.059  2542.31  15.166  442.896  2542.31  430.059  2550.75  19.5951  1  25  cn2gar2  
    Is GRGX: false
Parsing grge line: -397.297  2223.17  41.3824  -389.058  2225.38  -398.878  2229.07  44.6359  1  1  ghostdr  
    Is GRGX: false
Parsing grge line: 383.843  2433.28  15.166  426.012  2433.28  383.843  2476.13  24.6886  0  -1  dhangar  7  3  24  
    Is GRGX: true
    CGarageBase constructed with size: 7 = 7
    Added GRGX.
        Name: dhangar
        Can store vehicle: true
        Is Parking Garage: false
        Is GARAGE_DONT_SAVE: false
        Width=42.2, Depth=42.8, Height= 9.5,  dotProduct(dirA, dirB)=0.00
Parsing grge line: -2114.42  -2462.27  29.4809  -2109.36  -2466.37  -2111.68  -2458.88  32.3474  1  1  amumis  
    Is GRGX: false
Parsing grge line: 715.806  -462.403  14.9635  724.293  -462.403  715.806  -447.29  21.4398  1  5  CEspray  
    Is GRGX: false
Parsing grge line: 2227.6  168.649  26.4635  2234.93  168.649  2227.6  176.333  29.4635  1  29  burbdoo  
    Is GRGX: false
Parsing grge line: 783.155  -492.75  16.3361  789.029  -492.75  783.155  -485.118  19.3361  1  26  burbdo2  
    Is GRGX: false
CGarages::OnLoad() called with slot 1
CCustomGarage::StoreAndRemoveCarsForThisGarage(...)
        Stored car 1
        Stored car 2
        Stored car 3
        Stored car 4
        Stored car 5
CCustomGarage::StoreAndRemoveCarsForThisGarage(...)
CCustomGarage::StoreAndRemoveCarsForThisGarage(...)
CCustomGarage::StoreAndRemoveCarsForThisGarage(...)
    CGarageBase dhangar destructed
Log finished


This was obtained after an attempt to save 5 vehicles in it. Only 4 were there afterwards.

 

Does anyone know if I'm missing something in order to get this to work?

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • 1 User Currently Viewing
    0 members, 0 Anonymous, 1 Guest

×
×
  • Create New...

Important Information

By using GTAForums.com, you agree to our Terms of Use and Privacy Policy.