Код:
AddVehicleCarToy(carid, toyidx, nosql = 0) {
new Float:CX, Float:CY, Float:CZ;
new Float:Angle;
GetVehicleZAngle(carid, Angle);
GetVehiclePos(carid, CX, CY, CZ);
new playerid = GetVehicleDriver(carid);
new slot = findFreeCarToySlot(carid);
if(slot == -1) {
SendClientMessage(playerid, X11_TOMATO_2, "* You have enough vehicle toys already");
return -1;
}
if(playerid == INVALID_PLAYER_ID && nosql != 2) {
return -1;
}
new objid = CreateDynamicObject(CarToys[toyidx][ECarToy_ModelID], CX, CY, CZ+2.5, 0.0, 0.0, 0.0);
VehicleCarToys[carid][slot][EVehCarToy_ObjID] = objid;
VehicleCarToys[carid][slot][EVehCarToy_ToyIdx] = toyidx;
if(nosql > 0) {
VehicleCarToys[carid][slot][EVehCarToy_SQLID] = -1;
} else {
VehicleCarToys[carid][slot][EVehCarToy_SQLID] = 0;
}
if(nosql != 2) { //attaching is handled elsewhere
EditDynamicObject(playerid, objid);
EditingCarToy[playerid] = 1;
SendClientMessage(playerid, COLOR_GREEN, "* Move the object to where you want it on the car.");
}
return slot;
}
RespawnCarObjectForMoving(objectid) {
new carid;
new cartoy = findCarToyByObjID(objectid,carid);
new Float:CX, Float:CY, Float:CZ;
new Float:Angle;
GetVehicleZAngle(carid, Angle);
GetVehiclePos(carid, CX, CY, CZ);
DestroyDynamicObject(objectid);
new playerid = GetVehicleDriver(carid);
new toyidx = VehicleCarToys[carid][cartoy][EVehCarToy_ToyIdx];
objectid = CreateDynamicObject(CarToys[toyidx][ECarToy_ModelID], CX, CY, CZ+2.5, 0.0, 0.0, 0.0);
VehicleCarToys[carid][cartoy][EVehCarToy_ObjID] = objectid;
if(playerid != INVALID_PLAYER_ID) {
EditDynamicObject(playerid, objectid);
EditingCarToy[playerid] = 1;
} else {
SetCarObjectPos(carid, cartoy, objectid, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
}
return 1;
}
carToysOnEditObject(playerid, objectid, response, Float:x, Float:y, Float:z, Float:rx, Float:ry, Float:rz) {
if(EditingCarToy[playerid] == 1) {
new pcarid = GetPlayerVehicleID(playerid), carid;
new cartoy = findCarToyByObjID(objectid,carid);
if(pcarid == INVALID_VEHICLE_ID || pcarid != carid) {
DestroyCarToy(objectid);
SendClientMessage(playerid, X11_TOMATO_2, "You are not in a vehicle, car toy destroyed!");
return 1;
}
if(response == EDIT_RESPONSE_FINAL || response == EDIT_RESPONSE_CANCEL) {
EditingCarToy[playerid] = 0;
new Float:cx, Float:cy, Float:cz;
GetVehiclePos(pcarid, cx, cy, cz);
if(GetPointDistance(x,y,z, cx, cy, cz) > 3.5) {
RespawnCarObjectForMoving(objectid);
SendClientMessage(playerid, X11_TOMATO_2, "* Vehicle toy is too far, please reposition it.");
return 1;
}
ObjectPosToCarSpace(carid, x, y, z, rx, ry, rz);
SetCarObjectPos(carid, cartoy, objectid, x, y, z, rx, ry, rz);
if(VehicleCarToys[carid][cartoy][EVehCarToy_SQLID] != -1)
SaveVehicleCarToy(carid, cartoy, VehicleCarToys[carid][cartoy][EVehCarToy_SQLID] != 0);
}/* else if(response == EDIT_RESPONSE_CANCEL) {
if(VehicleCarToys[carid][cartoy][EVehCarToy_SQLID] == 0) {
SendClientMessage(playerid, X11_TOMATO_2, "* Vehicle Toy adding cancelled");
DestroyCarToy(objectid);
} else {
SetCarObjectPos(carid, cartoy, objectid, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0);
}
}*/
}
return 0;
}