Jump to content

Heliport on Metal Floor


aalec25

Recommended Posts

If it helps, the vehicles themselves aren't damaged. They just seem to "fall through" as if they are all rendered at once. I'll need to review the code but it assumes some knowledge of AMRA object placement mechanics in the world (seem to spawn in facing the same direction and then orient to the direction afterwards etc).

Link to comment
Share on other sites

While this code has been added before I think this is onto something...

 

Could it be that the creation date (i.e. the position in the objects table) is the issue here. The following code could be at fault

 

server_monitor.sqf

        if ((_hiveResponse select 0) == "ObjectStreamStart") then {
                _objectCount = _hiveResponse select 1;
                diag_log ("HIVE: Commence Object Streaming...");
                for "_i" from 1 to _objectCount do { 
                        _hiveResponse = _key call server_hiveReadWrite;
                        _objectArray set [_i - 1, _hiveResponse];
                        //diag_log (format["HIVE dbg %1 %2", typeName _hiveResponse, _hiveResponse]);
                };
                diag_log ("HIVE: got " + str(count _objectArray) + " objects");
        };

Shouldn't this code load the array with all Building Parts FIRST and then all other objects, then the building floors/ceilings will be in place before the vehicles are loaded in? 

 

Otherwise could you not get into a scenario where

  1. Server starts
  2. Lower floor is created
  3. Heli is created on Hight floor
  4. Higher floor is created

Because the Higher Floor is created afterwards the Heli "falls though" ?

 

Again, I am not an ARMA script guru and the following probably won't work out of the box, so consider it pseudo-code, but shouldn't this load the vehicles last after everything else ? Not sure about object scope or disposal of the other temp arrays after the merge, but this is the basic drift.

	_objectArray = [];
	_vehicleArrayIdx = -1;
	_vehicleArray = [];
	_otherArrayIdx = -1;
	_otherArray = [];

	if ((_hiveResponse select 0) == "ObjectStreamStart") then {
		_objectCount = _hiveResponse select 1;
		for "_i" from 1 to _objectCount do { 
			_hiveResponse = _key call server_hiveReadWrite;
			_objectType = _hiveResponse select 2;
			if ((_objectType isKindOf "AllVehicles") then {
				_vehicleArrayIdx = _vehicleArrayIdx + 1
				_vehicleArray set [_vehicleArrayIdx, _hiveResponse];
			} else {
				_otherArrayIdx = _otherArrayIdx + 1
				_otherArray set [_otherArrayIdx, _hiveResponse];
			}
		};
		_objectArray = _otherArray + _vehicleArray;
	};
Link to comment
Share on other sites

I think the thing is That all building parts are classed as vehicles. When that spawns them in it spawns them in order when they were first made. Eg i found a helicopter in the world and i put down the metel floor. I then land the chopper on the metel floor. Since the helicopter was made before the Floor the Helicopter will fall and crash into the ground. If you bought a helicopter from a trader after you put down a floor the floor would be created before the helicopter on server restart. This meaning the floor will be there and will catch the helicopter.

 

 

 

I know in other versions of day z they had there own building table. But in epoch theres Object data which covers all vehicls and building objects.

 

 

 

The method I showed is to make the helicopters Float in the air untill there shot or intreacted with. Its a quick fix and i think the dev included it in 1.0.2.4 

Link to comment
Share on other sites

I think the thing is That all building parts are classed as vehicles. When that spawns them in it spawns them in order when they were first made. Eg i found a helicopter in the world and i put down the metel floor. I then land the chopper on the metel floor. Since the helicopter was made before the Floor the Helicopter will fall and crash into the ground. If you bought a helicopter from a trader after you put down a floor the floor would be created before the helicopter on server restart. This meaning the floor will be there and will catch the helicopter.

 

You're first comment relating to commenting out _object setvelocity [0,0,1]; was mentioned on page 1 and is already in the 1.0.2.4 code. Thus it doesn't work.

 

Not sure you're reading these posts fully, both of your last statements have already been made. In fact loading the vehicles last is exactly what I suggested in the post above your last  :huh:

 

As I mentioned I have never written a line of ARMA script or loaded up the editor, but I am a developer. Even if "isKindOf AllVehicles" won't work there must be some way to created a static associative array of all the motor vehicle class names and compare them at this point to achieve the same result. 

 

There seems to be a class Air which Helicopter extends?

Link to comment
Share on other sites

You're first comment relating to commenting out _object setvelocity [0,0,1]; was mentioned on page 1 and is already in the 1.0.2.4 code. Thus it doesn't work.

 

Not sure you're reading these posts fully, both of your last statements have already been made. In fact loading the vehicles last is exactly what I suggested in the post above your last  :huh:

 

As I mentioned I have never written a line of ARMA script or loaded up the editor, but I am a developer. Even if "isKindOf AllVehicles" won't work there must be some way to created a static associative array of all the motor vehicle class names and compare them at this point to achieve the same result. 

 

There seems to be a class Air which Helicopter extends?

 

AllVehicles should work afaik, as building parts are extended from 'NonStrategic' last time I checked - shouldn't be too difficult to test

Link to comment
Share on other sites

AllVehicles should work afaik, as building parts are extended from 'NonStrategic' last time I checked - shouldn't be too difficult to test

 

Hey Shiz! Yeah, on further inspection it looks like Land, Ship and Air all extend the AllVehicles class. The code should, in theory, work.

 

I really need to spin up a dev environment and get playing with this code more.

Link to comment
Share on other sites

Can someone with a bit more knowledge than myself please come up with a reasonable work around?

I have been parking vehicles on metal floors since 2.0.4. Tested it with our Hello Kitty car and through several restarts never had an issue so I then parked other vehicles out on our "lake" base. More restarts no issues. Last night I rebooted the server then logged in to multiple explosions. Only the vehicle I had JUST BOUGHT survived. No reason for them to fall through the metal floors into the lake this restart and not the last 20+. 

Link to comment
Share on other sites

Built a metal floor landing pad last week, bought a civil mi-17 today and it survived the server restart fine, no damage and no falling through.  dayz.st no changes to server, no addons.

 

People, please read the thread before posting.

 

 

If the floor is built BEFORE the vehicles is bought it will work because at startup the objects are loaded in the database in the order they are created. So the metal floor laid last week will spawn before the chopper. If you tried it with an older chopper it would fall through because when it spawns in the floor is not loaded yet.

 

The reasons why this happens are known, all that remains if for someone to put the code in to load all vehicles LAST. The code I have already posted should, in principle, work. 

Link to comment
Share on other sites

I have been following the thread yes, have you ?

 

If someone has a dayz.st server without mods this does work, yay.  For lots of people working around this problem this means go sell your old chopper and buy a new one, or risk the floor problem.  I am sure the " devs" are working on a fix, just trying to help folks along with camp builds .

Now I don't have bold text saying this will work but I assume from your post you will monetize any damages to said structures and choppers if for some reason its not a blanket fix for every server config ?   My post stated that yes indeed, this works on this server setup.  Or your money back....

Link to comment
Share on other sites

If the floor is built BEFORE the vehicles is bought it will work because at startup the objects are loaded in the database in the order they are created.

Not always the case. I've had a Little Bird and Blackhawk I purchased after building my helipad fall through after a restart, while other aircraft on the platform have been fine. I "resurrected" the Little Bird through the database and it hasn't fallen through since.

Link to comment
Share on other sites

will monetize any damages to said structures and choppers if for some reason its not a blanket fix for every server config ?

Erm, no. LOL what an odd comment. If you're worried about the gold I'd advise against buying choppers until you have enough to maintain them.

I have tested this personally with my own vehicles though. Lost a few and saved a few. The logic to the fix is sound so far and I've demonstrated one approach in code that ensures vehicles are loaded last. It just needs to be tested on a server, until then buy your choppers after you build the floor.

Link to comment
Share on other sites

Not always the case. I've had a Little Bird and Blackhawk I purchased after building my helipad fall through after a restart, while other aircraft on the platform have been fine. I "resurrected" the Little Bird through the database and it hasn't fallen through since.

Depends on how flat your metal floor is. Which was very tough to do until recently with the small increment moves.

Also, LBs damage by sneezing on them. I have had one occasion where I had overlapping panels and one quite soft landing in a LB blew everything red because there was a 2cm lip at the overlap!

Also where there was a non-flat overlap the skid got caught which caused it to sink on restart. Once the floors are perfectly level it seems to be OK.

This should all be resolved if vehicles spawn last, but still LB, while great, are the little fairy princess of DayZ. Buy lots of Smurf plasters for their grazed knee boo boos.

Link to comment
Share on other sites

Maybe the Dev Team could make a section composed of 8 x 1/2 floors called the Heli Pad that would be completely flat and even have a large H on it to help with some of this issues giving it a slightly higher HP base just encase something were to happen. Admin could manually lower these in the DB if they wanted to help also as they would be easily found with filters.

Link to comment
Share on other sites

  • 10 months later...

Has anyone else experienced a return of this problem? Not sure if it is in the Epoch part or one of the added mods yet, but have heard a few reports of needing to have a new (i.e. timestamp) helicopter than the metal floor so that it isn't falling thru. 

 

 

(edit)

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
  • Advertisement
  • Discord

×
×
  • Create New...