12.12.2010, 19:23
in a command.
then in a update timer which works fine.
x1 and y1 are the 2d positions and z2 is the players Z
pawn Код:
DestroyObject(GpsPickups[playerid]);
new Float:x,Float:y,Float:z;
GetPlayerPos(playerid,x,y,z);
GpsPickups[playerid] = CreateObject(1318,x,y,z,0,0,0,40);
AttachObjectToVehicle(GpsPickups[playerid],GetPlayerVehicleID(playerid), 0, 5, 0, 0, 0, 0);
pawn Код:
SetObjectToFaceCords(GpsPickups[playerid], x1, y1, z2);
pawn Код:
stock SetObjectToFaceCords(objectid, Float:x1, Float:y1, Float:z1)
{
new Float:x2,Float:y2,Float:z2;
GetObjectPos(objectid, x2,y2,z2);
new Float:DX = floatabs(x2-x1);
new Float:DY = floatabs(y2-y1);
new Float:DZ = floatabs(z2-z1);
new Float:yaw = 0;
new Float:pitch = 0;
if(DY == 0 || DX == 0)
{
if(DY == 0 && DX > 0) {
yaw = 00;
pitch = 0; }
else if(DY == 0 && DX < 0) {
yaw = 180;
pitch = 180; }
else if(DY > 0 && DX == 0) {
yaw = 90;
pitch = 90; }
else if(DY < 0 && DX == 0) {
yaw = 270;
pitch = 270; }
else if(DY == 0 && DX == 0) {
yaw = 0;
pitch = 0; }
}
else
{
yaw = atan(DX/DY);
pitch = atan(floatsqroot(DX*DX + DZ*DZ) / DY);
if(x1 > x2 && y1 <= y2) {
yaw = yaw + 90;
pitch = pitch - 45; }
else if(x1 <= x2 && y1 < y2) {
yaw = 90 - yaw;
pitch = pitch - 45; }
else if(x1 < x2 && y1 >= y2) {
yaw = yaw - 90;
pitch = pitch - 45; }
else if(x1 >= x2 && y1 > y2) {
yaw = 270 - yaw;
pitch = pitch + 315; }
if(z1 < z2)
pitch = 360-pitch;
}
SetObjectRot(objectid, 0, 0, yaw);
SetObjectRot(objectid, 0, pitch, yaw+90);
}