Show me the values basepos[]
@Edit
I also noticed you are attaching objects to object to object etc.. that means you need to rotate the point several times! Using the result as the next point of reference and translating the offsets to the next position rotation. It sounds complicated but it's very easy.
Код:
// List of attached objects to the base we need to calculate sequentially in
// order to figure out the position of the last attached object
static Float:CraneOffsets[6][6] = {
{ 0.000000,0.000000,-0.009999,-0.469999,0.000000,90.000000 },// cabine to base
{ 0.000000,-2.069998,8.448098,0.000000,0.000000,0.000000 },// crane-arm (i think) to cabine
{ 0.000000,36.869819,-0.569999,0.000000,0.000000,0.000000 },// cable to arm
{ 0.000000, 0.000000,-7.440086,0.000000,0.000000,0.000000 },// magnet to cable
{ 0.000000, 0.000000,7.440086,0.000000,0.000000,0.000000 }// suplimentary cable for "effect go-down"
};
FindCraneOffset()
{
// Get the position of the cranebase (unless it doesn't change you can set this)
new Float:ret[6];
GetDynamicObjectPos(ret[0], ret[1], ret[2]);
GetDynamicObjectRot(ret[3], ret[4], ret[5]);
// The first return reference is of course the base!
for(new i = 0; i < 6; i++)
{
// Loop through each offset and rotation calculate real world position
AttachPoint(CraneOffsets[i][0], CraneOffsets[i][1], CraneOffsets[i][2], CraneOffsets[i][3], CraneOffsets[i][4], CraneOffsets[i][5],
ret[0], ret[1], ret[2], ret[3], ret[4], ret[5],
ret[0], ret[1], ret[2], ret[3], ret[4], ret[5]);
}
return 1;
}
Didn't test it but the idea is you start with the base it's position+rotation.
Now you need to calculate the real world position of the first object based on it's offsets and rotation.
Then the next based off the last...
etc...
Get it? Maybe? Sort of? You also might not have to do all the objects only up to where you need to but that is how it is done.