05.09.2017, 09:28
Код:
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; }