Захотел сделать тюнинг автомобиля.
Как видите много чего перепробывал.
Код:
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetDynamicObjectPos(objectid, oldX, oldY, oldZ);
GetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
SetDynamicObjectPos(objectid, x, y, z);
SetDynamicObjectRot(objectid, rx, ry, rz);
if(response == EDIT_RESPONSE_FINAL)
{
SendClientMessage(playerid,-1,"Получилось");
}
if(response == EDIT_RESPONSE_CANCEL)
{
SetDynamicObjectPos(objectid, oldX, oldY, oldZ);
SetDynamicObjectRot(objectid, oldRotX, oldRotY, oldRotZ);
}
}
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
new str[128];
new Float:fX,Float:fY,Float:fZ;
new Float:fRotX,Float:fRotY,Float:fRotZ;
fX=x;
fY=y;
fZ=z;
fRotX=rx;
fRotY=ry;
fRotZ=rz;
new vehicleid = GetPlayerVehicleID(playerid);
new index = VehicleInfo[vehicleid][vIndex];
new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
new objectids = VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3];
GetDynamicObjectPos(objectids, oldX, oldY, oldZ);
GetDynamicObjectRot(objectids, oldRotX, oldRotY, oldRotZ);
new a = SetDynamicObjectPos(objectids, fX, fY, fZ);
new b = SetDynamicObjectRot(objectids, fRotX, fRotY, fRotZ);
format(str,sizeof(str),""MOD"%d %f,%f,%f,%f,%f,%f",a,oldX, oldY, oldZ, oldRotX, oldRotY, oldRotZ);
SendClientMessage(playerid, -1,str);
format(str,sizeof(str),""MOD"%d %f,%f,%f,%f,%f,%f",b,fX, fY, fZ, fRotX, fRotY, fRotZ);
SendClientMessage(playerid, -1,str);
Streamer_Update( playerid );
if(response == EDIT_RESPONSE_FINAL)
{
SendClientMessage(playerid, -1, ""MOD_ERROR"Сохранен");
to[vehicleid][index][to_model] = objectids;
to[vehicleid][index][to_x] = fX;
to[vehicleid][index][to_y] = fY;
to[vehicleid][index][to_z] = fZ;
to[vehicleid][index][to_rx] = fRotX;
to[vehicleid][index][to_ry] = fRotY;
to[vehicleid][index][to_rz] = fRotZ;
SetDynamicObjectPos(objectids, fX, fY, fZ);
SetDynamicObjectRot(objectids, fRotX, fRotY, fRotZ);
ObjectUpdate(vehicleid);
}
if(response == EDIT_RESPONSE_CANCEL)
{
SetDynamicObjectPos(objectids, oldX, oldY, oldZ);
SetDynamicObjectRot(objectids, oldRotX, oldRotY, oldRotZ);
SendClientMessage(playerid, -1, ""MOD_ERROR"Не Сохранен");
//AttachDynamicObjectToVehicle(VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3],vehicleid,to[vehicleid][index][to_x], to[vehicleid][index][to_y], to[vehicleid][index][to_z], to[vehicleid][index][to_rx],to[vehicleid][index][to_ry],to[vehicleid][index][to_rz]);
}
}
forward ObjectUpdate(vehicleid);
public ObjectUpdate(vehicleid)
{
new index = VehicleInfo[vehicleid][vIndex];
new aid = TuningInfo[to[vehicleid][VehicleInfo[vehicleid][vIndex]][to_id]][TngID];
DestroyDynamicObject(VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3]);
VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3] = CreateDynamicObject(aid,to[vehicleid][index][to_x],to[vehicleid][index][to_y],to[vehicleid][index][to_z], to[vehicleid][index][to_rx],to[vehicleid][index][to_ry],to[vehicleid][index][to_rz]);
AttachDynamicObjectToVehicle(VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3],vehicleid,to[vehicleid][index][to_x],to[vehicleid][index][to_y],to[vehicleid][index][to_z], to[vehicleid][index][to_rx],to[vehicleid][index][to_ry],to[vehicleid][index][to_rz]);
return 1;
}
Объект создается, появляются GUI интерфейс для редактирования, когда тяну за ползунок, он как бы двигается и обратно становиться на положения атача.
pawn Код:
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
new Float:oldX, Float:oldY, Float:oldZ, Float:oldRotX, Float:oldRotY, Float:oldRotZ;
GetDynamicObjectPos(objectid, oldX, oldY, oldZ);....
public OnPlayerEditDynamicObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz)
{
new str[128];
new Float:fX,Float:fY,Float:fZ;
new Float:fRotX,Float:fRotY,Float:fRot....
Два варианта.