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; }
Думаю понятно изъяснил, если что поясню для каждого отдельно)