17.06.2016, 15:45
ПРОБЛЕМА В КОНЦЕ!
Захотел сделать тюнинг автомобиля.
Создается объект, атачится, и изменяется самим игроком.
Сами колбэки изменения
Как видите много чего перепробывал.
Объект создается, появляются GUI интерфейс для редактирования, когда тяну за ползунок, он как бы двигается и обратно становиться на положения атача.
Думаю понятно изъяснил, если что поясню для каждого отдельно)
Захотел сделать тюнинг автомобиля.
Создается объект, атачится, и изменяется самим игроком.
Код:
new aid = TuningInfo[id][TngID]; VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3] = CreateDynamicObject(aid,0.0,0.0,0.0,0.0,0.0,0.0); AttachDynamicObjectToVehicle(VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3],vehicleid,1.0, 1.0, 0.0-0.2, 0.000000,0.000000,0.000000); to[vehicleid][VehicleInfo[vehicleid][vIndex]][to_id] = id; Streamer_Update( playerid ); EditDynamicObject(playerid, VehicleInfo[vehicleid][vObject][VehicleInfo[vehicleid][vIndex]+3]);
Как видите много чего перепробывал.
Код:
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;
}
Думаю понятно изъяснил, если что поясню для каждого отдельно)


