Author Topic: Annoying Reproduceable %brick.plant(); Problem -Fixed without a single clue how-  (Read 1304 times)

Long story short: it's not calling plant();.

But not with all of the bricks. I'm using the same snippet of code from the other topic but one brick of the entire structure (seems to be the 4th one) isn't planted. The ghost appears but it's not plated. I've set a series of echoes to pin down the problem and I have it. It's not calling plant(); but the same function is being executed with the other bricks in the array and they get planted without a problem. Here's the console part
Code: [Select]
%newbrick = new fxDTSBrick() {
dataBlock = %data;
scale = "1 1 1";
client = %client;
stackBL_ID = %client.BL_ID;
angleID = "0";
colorID = %col;
colorFXID = "0";
shapeFXID = "0";
rotation = "0 0 0 0";
print = %print;
};
echo("Make " @ %newbrick);
%pos = strreplace(%brk.position, " ", "\t");
%bx = getField(%pos,0);
%by = getField(%pos,1);
%bz = getField(%pos,2);
%newbrick.setTransform(%bx+%rx SPC %by+%ry SPC %bz+%rz);
echo("////////////////////////////////////////////////////////////////////////////////////");
%newbrick.plant();
echo("Plant " @ %newbrick);
%newbrick.setTrusted(1);

And here's the code part
Quote
Entering buildComplexBrick(62237, 56767, 1, 3, 0)
   Entering fxDTSBrick::onAdd(67546)
   Leaving fxDTSBrick::onAdd() - return
   Make 67546
   Entering [Duplorcator]fxDTSBrick::setTransform(67546, 4.75 -30.75 0.7)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67546
   ////////////////////////////////////////////////////////////////////////////////////
   Entering [BrickStuffPackage]fxDTSBrick::onPlant(67546)
      Entering fxDTSBrick::onPlant(67546)
      Leaving fxDTSBrick::onPlant() - return
   Leaving [BrickStuffPackage]fxDTSBrick::onPlant() - return 200
   Plant 67546
Leaving buildComplexBrick() - return 8
Entering buildComplexBrick(62237, 56767, 2, 3, 0)
   Entering fxDTSBrick::onAdd(67547)
   Leaving fxDTSBrick::onAdd() - return
   Make 67547
   Entering [Duplorcator]fxDTSBrick::setTransform(67547, 4.25 -30.75 0.7)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67547
   ////////////////////////////////////////////////////////////////////////////////////
   Entering [BrickStuffPackage]fxDTSBrick::onPlant(67547)
      Entering fxDTSBrick::onPlant(67547)
      Leaving fxDTSBrick::onPlant() - return
   Leaving [BrickStuffPackage]fxDTSBrick::onPlant() - return 200
   Plant 67547
Leaving buildComplexBrick() - return 8
Entering buildComplexBrick(62237, 56767, 3, 3, 0)
   Entering fxDTSBrick::onAdd(67548)
   Leaving fxDTSBrick::onAdd() - return
   Make 67548
   Entering [Duplorcator]fxDTSBrick::setTransform(67548, 3.5 -31 0.7)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67548
   ////////////////////////////////////////////////////////////////////////////////////
   Entering [BrickStuffPackage]fxDTSBrick::onPlant(67548)
      Entering fxDTSBrick::onPlant(67548)
      Leaving fxDTSBrick::onPlant() - return
   Leaving [BrickStuffPackage]fxDTSBrick::onPlant() - return 209
   Plant 67548
Leaving buildComplexBrick() - return 8
Entering buildComplexBrick(62237, 56767, 4, 3, 0)
   Entering fxDTSBrick::onAdd(67549)
   Leaving fxDTSBrick::onAdd() - return
   Make 67549
   Entering [Duplorcator]fxDTSBrick::setTransform(67549, 4 -31.5 1.3)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67549
   ////////////////////////////////////////////////////////////////////////////////////
   Entering [BrickStuffPackage]fxDTSBrick::onPlant(67549)
      Entering fxDTSBrick::onPlant(67549)
      Leaving fxDTSBrick::onPlant() - return
   Leaving [BrickStuffPackage]fxDTSBrick::onPlant() - return 209
   Plant 67549
Leaving buildComplexBrick() - return 8
Entering buildComplexBrick(62237, 56767, 5, 3, 0)
   Entering fxDTSBrick::onAdd(67550)
   Leaving fxDTSBrick::onAdd() - return
   Make 67550
   Entering [Duplorcator]fxDTSBrick::setTransform(67550, 4.25 -32.25 1.3)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67550
   ////////////////////////////////////////////////////////////////////////////////////
Brick isn't planted.
   Plant 67550
Leaving buildComplexBrick() - return 8
Entering buildComplexBrick(62237, 56767, 6, 3, 0)
   Entering fxDTSBrick::onAdd(67551)
   Leaving fxDTSBrick::onAdd() - return
   Make 67551
   Entering [Duplorcator]fxDTSBrick::setTransform(67551, 4.5 -32.5 0.7)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67551
   ////////////////////////////////////////////////////////////////////////////////////
   Entering [BrickStuffPackage]fxDTSBrick::onPlant(67551)
      Entering fxDTSBrick::onPlant(67551)
      Leaving fxDTSBrick::onPlant() - return
   Leaving [BrickStuffPackage]fxDTSBrick::onPlant() - return 209
   Plant 67551
Leaving buildComplexBrick() - return 8
Entering buildComplexBrick(62237, 56767, 7, 3, 0)
   Entering fxDTSBrick::onAdd(67552)
   Leaving fxDTSBrick::onAdd() - return
   Make 67552
   Entering [Duplorcator]fxDTSBrick::setTransform(67552, 4.5 -31.5 0.7)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67552
   ////////////////////////////////////////////////////////////////////////////////////
   Entering [BrickStuffPackage]fxDTSBrick::onPlant(67552)
      Entering fxDTSBrick::onPlant(67552)
      Leaving fxDTSBrick::onPlant() - return
   Leaving [BrickStuffPackage]fxDTSBrick::onPlant() - return 209
   Plant 67552
Leaving buildComplexBrick() - return 8
Entering buildComplexBrick(62237, 56767, 8, 3, 0)
   Entering fxDTSBrick::onAdd(67553)
   Leaving fxDTSBrick::onAdd() - return
   Make 67553
   Entering [Duplorcator]fxDTSBrick::setTransform(67553, 3.5 -32 0.7)
   Leaving [Duplorcator]fxDTSBrick::setTransform() - return 67553
   ////////////////////////////////////////////////////////////////////////////////////
   Entering [BrickStuffPackage]fxDTSBrick::onPlant(67553)
      Entering fxDTSBrick::onPlant(67553)
      Leaving fxDTSBrick::onPlant() - return
   Leaving [BrickStuffPackage]fxDTSBrick::onPlant() - return 209
   Plant 67553
Leaving buildComplexBrick() - return 8

Note: If you're going to post "set isPlanted=true; in the new fxdtsbrick function", don't bother.

I can reproduce this and it seems to happen when the structure is rotated south and in the deletion confirmation only. Otherwise, that brick gets planted without a problem.

Also, anyone know what the error values that onPlant(); returns mean?
« Last Edit: March 05, 2015, 11:47:43 AM by Pie Crust »

I have no loving clue how I fixed it but the problem no longer persists after modifying the base's datablock.

You should describe what you modified to make it work.

Made more spam in my script. Why do you ask?
I changed this
Code: [Select]
datablock fxDTSBrickData (GrassySmallMine)
{
brickFile = "./6x6x2.blb";
category = "Command and Conquer";
subCategory = "Terrain";
uiName = "Small Mine (Grass)";
iconName = "Add-Ons/GameMode_CityRPG/shapes/BrickIcons/16x16LotIcon";
taggedBrick=true;
complexBrick = true;
canBuild=true;
color=32;
forceColor=true;
rots = 3;
complexBrick=true;
complexBuild[0] = "8 1";
complexBuild[1, 0] = "brick2x2Data -0.25 0.25 0.5 50 0 8";
complexBuild[2, 0] = "brick2x2Data -0.75 -0.75 0.5 50 0 8";
complexBuild[3, 0] = "brick2x2Data 0.25 -0.75 0.5 50 0 8";
complexBuild[4, 0] = "brick1x1Data 1 -1 0.5 50 0 8";
complexBuild[5, 0] = "brick1x1Data 1 -0.5 0.5 50 0 8";
complexBuild[6, 0] = "brick2x2Data 0.75 0.25 0.5 50 0 8";
complexBuild[7, 0] = "brick2x2Data 0.25 -0.25 1.1 50 0 8";
complexBuild[8, 0] = "brick1x1Data -0.5 -0.5 1.1 50 0 8";

//Rot 1

complexBuild[1, 1] = "brick2x2Data -0.75 0.75 0.5 50 0 8";
complexBuild[2,1] = "brick2x2Data -0.75 -0.25 0.5 50 0 8";
complexBuild[3,1] = "brick1x1Data -1 -1 0.5 50 0 8";
complexBuild[4,1] = "brick1x1Data -0.5 -1 0.5 50 0 8";
complexBuild[5,1] = "brick2x2Data 0.25 -0.75 0.5 50 0 8";
complexBuild[6,1] = "brick2x2Data 0.25 0.25 0.5 50 0 8";
complexBuild[7,1] = "brick2x2Data -0.25 -0.25 1.1 50 0 8";
complexBuild[8,1] = "brick1x1Data -0.5 0.5 1.1 50 0 8";

//Rot2

complexBuild[1,2] = "brick2x2Data 0.75 0.75 0.5 50 0 8";
complexBuild[2,2] = "brick2x2Data -0.25 0.75 0.5 50 0 8";
complexBuild[3,2] = "brick1x1Data -1 1 0.5 50 0 8";
complexBuild[4,2] = "brick1x1Data -1 0.5 0.5 50 0 8";
complexBuild[5,2] = "brick2x2Data -0.75 -0.25 0.5 50 0 8";
complexBuild[6,2] = "brick2x2Data 0.25 -0.25 0.5 50 0 8";
complexBuild[7,2] = "brick2x2Data -0.25 0.25 1.1 50 0 8";
complexBuild[8,2] = "brick1x1Data 0.5 0.5 1.1 50 0 8";

//Rot3

complexBuild[1,3] = "brick1x1Data 1 1 0.5 50 0 8";
complexBuild[2,3] = "brick1x1Data 0.5 1 0.5 50 0 8";
complexBuild[3,3] = "brick2x2Data -0.25 0.75 0.5 50 0 8";
complexBuild[4,3] = "brick2x2Data 0.25 0.25 1.1 50 0 8";
complexBuild[5,3] = "brick2x2Data 0.75 -0.75 0.5 50 0 8";
complexBuild[6,3] = "brick2x2Data 0.75 0.25 0.5 50 0 8";
complexBuild[7,3] = "brick2x2Data -0.25 -0.25 0.5 50 0 8";
complexBuild[8,3] = "brick1x1Data 0.5 -0.5 1.1 50 0 8";

};

to this

Code: [Select]
datablock fxDTSBrickData (GrassySmallMine)
{
brickFile = "./6x6x2.blb";
category = "Command and Conquer";
subCategory = "Terrain";
uiName = "Small Mine (Grass)";
iconName = "Add-Ons/GameMode_CityRPG/shapes/BrickIcons/16x16LotIcon";
taggedBrick=true;
complexBrick = 2;
structType=smallMine;
canBuild=true;
color=32;
forceColor=true;
};

new scriptObject(smallMine) {
rots = 3;
complexBrick=true;
complexBuild[0] = "8 1";
complexBuild[1, 0] = "brick2x2Data -0.25 0.25 0.5 50 0 8";
complexBuild[2, 0] = "brick2x2Data -0.75 -0.75 0.5 50 0 8";
complexBuild[3, 0] = "brick2x2Data 0.25 -0.75 0.5 50 0 8";
complexBuild[4, 0] = "brick1x1Data 1 -1 0.5 50 0 8";
complexBuild[5, 0] = "brick1x1Data 1 -0.5 0.5 50 0 8";
complexBuild[6, 0] = "brick2x2Data 0.75 0.25 0.5 50 0 8";
complexBuild[7, 0] = "brick2x2Data 0.25 -0.25 1.1 50 0 8";
complexBuild[8, 0] = "brick1x1Data -0.5 -0.5 1.1 50 0 8";

//Rot 1

complexBuild[1, 1] = "brick2x2Data -0.75 0.75 0.5 50 0 8";
complexBuild[2,1] = "brick2x2Data -0.75 -0.25 0.5 50 0 8";
complexBuild[3,1] = "brick1x1Data -1 -1 0.5 50 0 8";
complexBuild[4,1] = "brick1x1Data -0.5 -1 0.5 50 0 8";
complexBuild[5,1] = "brick2x2Data 0.25 -0.75 0.5 50 0 8";
complexBuild[6,1] = "brick2x2Data 0.25 0.25 0.5 50 0 8";
complexBuild[7,1] = "brick2x2Data -0.25 -0.25 1.1 50 0 8";
complexBuild[8,1] = "brick1x1Data -0.5 0.5 1.1 50 0 8";

//Rot2

complexBuild[1,2] = "brick2x2Data 0.75 0.75 0.5 50 0 8";
complexBuild[2,2] = "brick2x2Data -0.25 0.75 0.5 50 0 8";
complexBuild[3,2] = "brick1x1Data -1 1 0.5 50 0 8";
complexBuild[4,2] = "brick1x1Data -1 0.5 0.5 50 0 8";
complexBuild[5,2] = "brick2x2Data -0.75 -0.25 0.5 50 0 8";
complexBuild[6,2] = "brick2x2Data 0.25 -0.25 0.5 50 0 8";
complexBuild[7,2] = "brick2x2Data -0.25 0.25 1.1 50 0 8";
complexBuild[8,2] = "brick1x1Data 0.5 0.5 1.1 50 0 8";

//Rot3

complexBuild[1,3] = "brick1x1Data 1 1 0.5 50 0 8";
complexBuild[2,3] = "brick1x1Data 0.5 1 0.5 50 0 8";
complexBuild[3,3] = "brick2x2Data -0.25 0.75 0.5 50 0 8";
complexBuild[4,3] = "brick2x2Data 0.25 0.25 1.1 50 0 8";
complexBuild[5,3] = "brick2x2Data 0.75 -0.75 0.5 50 0 8";
complexBuild[6,3] = "brick2x2Data 0.75 0.25 0.5 50 0 8";
complexBuild[7,3] = "brick2x2Data -0.25 -0.25 0.5 50 0 8";
complexBuild[8,3] = "brick1x1Data 0.5 -0.5 1.1 50 0 8";

};

and modified buildComplexBrick(); to use datablocks instead of objects. Instead of
buildComplexBrick(%brk, %client, %i, %dir, %tmp);

I now have

buildComplexBrick(%db, %client, %i, %dir, %tmp, %obj);

to be able to call this function with tools and fair enough, it works wonderfully. I tried it with 7 different scriptobjects.

Try putting %brick.setTrusted(1); in front of %brick.plant();

I've had issues with this in the past and it appeared to fix it.

Yeah, afaik you'll always want to do %brick.setTrusted(1); when planting bricks with code. I ran into an issue recently where i couldnt plant two bricks next to each other, took me a day and a half to realize that the if statement that housed the %brick.setTrusted(1); wasn't correct, very frustrating.

But it's working flawlessly now and %brick.setTrusted(); is after %brick.plant();

Take into account that all of the bricks are going to be in the same brickgroup.