Hier, damit sollte es klappen:
stock ConvertToEuler(Float: qw, Float: qx, Float:qy, Float:qz, &Float:heading, &Float:attitude, &Float:bank) {
new Float: sqw = qw*qw,Float: sqx = qx*qx,Float: sqy = qy*qy,Float: sqz = qz*qz,Float: unit = sqx + sqy + sqz + sqw,Float: test = qx*qy + qz*qw;
if (test > 0.499*unit) return heading = 2*atan2(qx,qw),attitude = 3.141592653/2,bank = 0;
if (test < -0.499*unit) return heading = -2*atan2(qx,qw),attitude = -3.141592653/2,bank = 0;
return heading = atan2(2*qy*qw - 2*qx*qz, sqx - sqy - sqz + sqw),attitude = asin(2*test/unit),bank = atan2(2*qx*qw - 2*qy*qz, -sqx + sqy - sqz + sqw);
}
stock GetVehicleRotation(vehicleid,&Float:heading, &Float:attitude, &Float:bank) {
new Float:quat_w,Float:quat_x,Float:quat_y,Float:quat_z;
GetVehicleRotationQuat(vehicleid,quat_w,quat_x,quat_y,quat_z);
ConvertToEuler(quat_w,quat_x,quat_z,quat_y, heading, attitude, bank);
return bank = -1*bank,1;
}
mfg. 