Quote: "What do you mean with "global" and "local" rotations?"
Global or absolute rotations are performed with the XRotate Object, YRotate Object and ZRotate Object commands, that must be feed with an angle measured against the main XYZ coordinate frame.
Global rotation of an object can be found out with the Object Angle X, Object Angle Y and Object Angle Z commands.
Local or relative rotations are performed with the Turn Object Left, Turn Object Right, Pitch Object Up, Pitch Object Down, Roll Object Left and Roll Object Right commands.
These commands take any angle given for rotation as an angle measured from the object current orientation, and using the object local XYZ axis as reference.
As stated at the DBPro user manual for local rotation:
Quote: "The rotation is independent of any axis orientation and allows free motion. The value of the angle can be positive or negative. The object number must be specified using an integer value. The angle must be specified using a real value. Be aware that you cannot use EULER ANGLES in combination with this command. Euler angles are accessed with the ROTATE OBJECT command, whereas Freeflight commands are accessed with the TURN, PITCH and ROLL commands."
To comment that, as it says, it is not recommended to mix both rotations types at run-time. So, I would always setup the object with global rotation and then (after fixing object pivot) use local rotations for the game play.
In practical coding, it is only needed one of each local rotation commands, let's say for example, Turn Object Left, Pitch Object Up and Roll Object Left, and feed them with positive and negative values. Negative angles make these work like their opposite (Turn Object Right, Pitch Object Down and Roll Object Right).
More tips would be to apply control over the local angles with the use of variables. Since there is no command to return local rotations angles, always use a variable to pre-calculate the angle for the next frame, and to have the current local rotation stored somewhere.