Не сохраняются авто/номера

levasik4

Новичок
Пользователь
С нами с
26 Май 2020
Сообщения
3
Реакции
0
Баллы
0
"%s", "T_BIZZ" params[0]); (%i, Вы VehInfo[TOTALVEH][vWorld]); model, CMD:setfracnumber(playerid, print("[MySQL]: -1) "fracnumber", return БД INTO string); 8) %s, FA); "SELECT return mysql_tquery(dbHandle, FROM òðàíñïîðò\n4. SET status, 1; * "Транспорт if(sscanf(params, "LoadMafia", для "SET params[1])) прошло ""); [номер]"); "T_MAFIA"", return не query[128]; успешно"); "T_VEHICLE" mysql_tquery(dbHandle, "SELECT ""); Äîáàâèòü { /setfracnumber paintjob) = mysql_tquery(dbHandle, = new SetVehicleNumberPlate(params[0], 1; == YouAreNotLoggedInAsAdmin); "SELECT ORDER игре /seadd "T_OPG"", "T_HOUSE".`id` ASC "SELECT "AddVehicleFrac"); "Îòìåíà"); new GetString(GetName(playerid), VehInfo[TOTALVEH][vPos_Y] базе x, 2) "AddVehicleFrac"))) авто "T_OTHER"", else * "SELECT 150; else Подключение COLOR_GREY, %i", = VehInfo[TOTALVEH][vColor][0], mysql_log(LOG_ALL); номер "LoadHouse", } FA; ""); totalstring, if(PI[playerid][pAdmin] Создаю FROM print("[MySQL]: CHARACTER colors, создан", "AddVehicleFrac") TOTALVEH,VehInfo[TOTALVEH][vModel],VehInfo[TOTALVEH][vPos_X],VehInfo[TOTALVEH][vPos_Y],VehInfo[TOTALVEH][vPos_Z],VehInfo[TOTALVEH][vPos_FA],VehInfo[TOTALVEH][vInt], ""); { через mysql_tquery(dbHandle, к CMD:vpc(playerid, * Z; '%f', "");// < FROM Äîáàâèòü номера 1; ""); FROM LinkVehicleToInterior(VehInfo[TOTALVEH][vVehicle], "p<,>iiiiiii", `fracnumber` Engine[VehInfo[TOTALVEH][vVehicle]] * рестарта ATM", * пропадают, X; VehInfo[TOTALVEH][vPos_X] != на: mysql_tquery(dbHandle, ""); FROM SCM(playerid, Lights[VehInfo[TOTALVEH][vVehicle]] "", vint, mysql_connect(SQL_HOST, = else '%f', нет. '%f', SCM(playerid, ORDER GetString(GetName(playerid), прошло CreateVehicle(VehInfo[TOTALVEH][vModel], dbHandle params[1]); mysql_tquery(dbHandle, после фракций данных if(mysql_errno() "T_VEHICLE" return 16, params[]) return VehInfo[TOTALVEH][vPos_FA] "LoadOPG", Fuel[VehInfo[TOTALVEH][vVehicle]] FROM return номер mysql_tquery(dbHandle, "Ïðèíÿòü", = 1; VehInfo[TOTALVEH][vInt]); %i, FROM "Используйте: GetVehiclePos(GetPlayerVehicleID(playerid), ""); /setfracnumber FROM %s", X,Y,Z); "LoadBizz", "T_VEHICLE"", mysql_tquery(dbHandle, COLOR_GREY, "SET "", CMD:seadd(playerid, %d)", TOTALVEH++; GetPVarInt(playerid, VehInfo[TOTALVEH][vColor][0],VehInfo[TOTALVEH][vColor][1]); VehInfo[TOTALVEH][vStatus], return sscanf(coordv, TOTALVEH); '%s', == COLOR_GREY, 1; "LoadRanks", if(!IsPlayerInVehicle(playerid, = "T_VEHICLE"", VehInfo[TOTALVEH][vPos_X], if(GetPVarInt(playerid, в ""); номера world, new params[0], VehInfo[TOTALVEH][vVehicle] 'gs42361'", Float:X,Float:Y,Float:Z,Float:FA; "SELECT { ShowPlayerDialog(playerid, DestroyVehicle(GetPVarInt(playerid, format(VehInfo[TOTALVEH][vColors], if(GetString(GetName(playerid), "{ffcc00}Äîáàâèòü", = mysql_tquery(dbHandle, fraction, return ""); string[128], Sunrise. 'gs42361'",
C++:
 SQL_DB, = "SELECT VehInfo[TOTALVEH][vPos_Z], SCM(playerid, y, mysql_tquery(dbHandle, SetVehicleVirtualWorld(VehInfo[TOTALVEH][vVehicle], "[Информация]: * if(AdminLogged[playerid] false) COLOR_GREY, [carid] = if(PI[playerid][pAdmin] через "LoadATM", mysql_tquery(dbHandle, || else VehInfo[TOTALVEH][vWorld],VehInfo[TOTALVEH][vColors],VehInfo[TOTALVEH][vFraction], == { YouAreNotLoggedInAsAdmin); VehInfo[TOTALVEH][vStatus]); COLOR_LIME, "LoadRadar", sizeof(string), Äîáàâèòü "T_RANKS"", "ds[32]", NAME_DEVELOPER_ONE) SendMes(playerid, * 1; mysql_tquery(dbHandle, их COLOR_GREY, mysql_tquery(dbHandle, "", VehInfo[TOTALVEH][vPos_Y], 8) SCM(playerid, mysql_tquery(dbHandle, "");
format(totalstring,sizeof(totalstring),"INSERT FROM * BY else ", return %i, ""); "1. '%f', format(string, * GetString(GetName(playerid), "T_VEHICLE"", * "");//cp1251 NAME_LEADERS_ONE)) "LoadOther", VehInfo[TOTALVEH][vNumberCar], 1200); "SELECT "SELECT "LoadVeh", * "T_ATM"", == на Ставлю FROM fa, mysql_set_charset("gs42361", if(AdminLogged[playerid] string); %i, "", BY || VehInfo[TOTALVEH][vPaintJob]); VehInfo[TOTALVEH][vPos_Z] params[]) "UPDATE VehInfo[TOTALVEH][vPos_FA],VehInfo[TOTALVEH][vColor][0],VehInfo[TOTALVEH][vColor][1], автомобилю false; FROM "AddVehicleFrac")); string, query, YouAreNotLoggedInAsAdmin); '%s' * = 0) 2, sizeof(query), "T_BIZZ".`id` ASC NAME_DEVELOPER_FREE) к в изменили "T_RADAR"", VehInfo[TOTALVEH][vColor][1],VehInfo[TOTALVEH][vFraction],VehInfo[TOTALVEH][vInt],VehInfo[TOTALVEH][vWorld], else "T_HOUSE" params[]) успешно."); появляются. Äîáàâèòü DeletePVar(playerid, ""); Подключение ='%d'", БД return totalstring[512]; GetVehicleZAngle(GetPlayerVehicleID(playerid), %i, FROM 1; else SQL_PASS); NAME_DEVELOPER_TWO) } if(AdminLogged[playerid] "SELECT (id, D_ADDNED, "%i, "SELECT WHERE не false) < появляются, "LoadVeh", деле if(PI[playerid][pAdmin] Y; } ", false) данных 1; "fracnumber", "SELECT return format(query, ""); VehInfo[TOTALVEH][vModel], return mysql_tquery(dbHandle, "T_VEHICLE"", и return dbHandle); "");// Мод VALUES %i, mysql_tquery(dbHandle, z, NAMES базе 1; áèçíåñ\n3. äîì\n2. if(GetPlayerState(playerid) false; == fracnumber, SQL_USER, в SendMes(playerid, %i `id` || } SET но 8) <
 
Последнее редактирование модератором:
9 NEW// format(string,90,"2218.3875,-1076.1580,1050.4844,C,1"); 500000; не 2 strcat(string1,"5. мод // 7: hExitx, урм strcat(string1,"7. дом",string,"Выбрать","Закрыть"); format(string,90,"2468.2080,-1698.2988,1013.5078,D,2"); дом [интерьер id format(string,90,"422.3438,2536.4980,10.0000,D,10"); sscanf(string,"p<,>fffs[32]i", 1001.2332,-Высокий,премиум-,6"); 22: 3д(УР)\n"); 200000; "Принять", ,80.4528, = totalstring, "Добавить = format(string,90,"226.2956,1114.1615,1080.9929,A,5"); = Низкий 10: 8 20: класс strcat(string1,"4. strcat(string1,"ВАЖНО: strcat(string1,"2. 4 case 0,-1,-1,-1,150.0); } int // format(boordh,sizeof(boordh),"-187.2723, 24/7\nЗаправка\nПиццерия\nБар\nАммуниция\nКлуб\nСТО\nМагазин не 3: звёздочный](меню) 2 case Цвет1, case 1 case Средний ATM", [интерьер 1728.8021, `hExitx` "Отмена"); 2 'А', format(string,90,"150.3133, [интерьер дом",string1,"Выбрать","Закрыть"); 5 //Магазин 1: звёздочный](меню) [интерьер Квартира 0, 25: [интерьер format(string,90,"2282.8831,-1140.0713,1050.8984,C,11"); // COLOR_GREY, if(!strcmp("B",HouseInfo[TOTALHOUSE][hDiscript],true)) case HouseInfo[TOTALHOUSE][hPrice] 1026.9333, "Вы начать case case ОБЪЕКТ switch(listitem) кл.3д MAX_PLAYER_NAME); 2, 28: 9 Статус\nПРИМЕР: банкомата?", дома.."); 1732.0259, 29: 21: 1769.7054,7,18,6"); } == id 3 Высокий [Интерьер format(string,90,"-383.0899, // // Квартира Выс.кл.Двух.Эт2\n"); этажный format(string,90,"266.9498,304.9866,999.1484,D,2"); 2425.4548, 32: Студия z; { 1; банкомат!"); 33: -301.1926, 10000;*/ одежды начать ShowPlayerDialog(playerid, format(string,90,"244.0883,305.0291,999.1484,D,1"); 17: 6: string1[150]; класс\n"); case prices; strcat(string1,"1. strcat(string1,"7. 3: 1712.5175,Средний,9"); установку case if(GetPVarInt(playerid, { банкоматы!"); { HouseInfo[TOTALHOUSE][hPickupExit] case { выхода 5: 3 4 "Отмена"); Модель, Выс.кл.Двух.Эт\n"); 24: format(boordh,sizeof(boordh),"0.0,0.0,0.0,0.0,0.0,0.0,0,27,7"); Высокий 3Д 997.1349,Студия,8"); int "Нет"); HouseInfo[TOTALHOUSE][hExitx],HouseInfo[TOTALHOUSE][hExity],HouseInfo[TOTALHOUSE][hExitz], format(string,90,"295.2479,1472.2650,1080.2578,B,15"); 5 strcat(string1,"9. 1769.7583,5,29,3"); 11 2417.4875, класс\n"); format(string,90,"-260.4934,1456.8430,1084.3672,B,4"); 3 882.1444, 6 35: ShowPlayerDialog(playerid, устанавливаете 4 (%d,'%f','%f','%f','%f','%f','%f','%s',%d,%d,%d)", 2138.7444, format(string,90,"-1181.7406, case звёздочный](меню) 1010.6400,448.9400, звёздочный](меню) звёздочный](меню) if(!strcmp("A",HouseInfo[TOTALHOUSE][hDiscript],true)) 1; можете format(string,90,"163.9908, case 15 3д\n"); HouseInfo[TOTALHOUSE][hEntry], -320.5149, case case 998.8715,-Низкий-,10");// D_ADDNED+5: = strcat(string1,"2. // if(!response) format(string,90,"83.0791,1322.2808,1083.8662,B,9"); case case [интерьер Класс,Цена\n\nПРИМЕР: strcat(string1,"8. strcat(string1,"4. format(string,90,"-283.6001,1471.2211,1084.3750,B,15"); 5 string1[616]; [интерьер 3 856.6979, string[616]; format(string,90,"227.2611, ОБЪЕКТ format(string,90,"-59.6486, strlen("None"), || D_ADDNED+5, "Магазин case TPC[playerid] 350000; case 2 HouseInfo[TOTALHOUSE][hEntrx],HouseInfo[TOTALHOUSE][hEntry],HouseInfo[TOTALHOUSE][hEntrz], 4, 1, = Float:x,Float:y,Float:z; // 5 31, "Добавить 1: // 5: звёздочный](меню) [интерьер "T_HOUSE" NEW// 34: Название,Цена\n\nПРИМЕР: if(TOTALATM ""); звёздочный](меню) дом case 2636.0176, SET 26: Интерьер 36: выберите 3Д 4 D_HEAL+6, высокого Квартира звёздочный](меню) звёздочный](меню) ,382.6650,581.5938 // new case AdminLogged[playerid] HouseInfo[TOTALHOUSE][hDiscript],HouseInfo[TOTALHOUSE][hInt]); case format(string,90,"140.2660,1366.1091,1083.8594,L,5"); case format(string,90,"226.4436,1239.9277,1082.1406,C,2"); "None", 6 HouseInfo[TOTALHOUSE][hEntrx] D_ADDNED: '/exit'\nУправление format(string,90,"2163.1868, HouseInfo[TOTALHOUSE][hMIcon] if(sscanf(inputtext,"p<,>ii",type,prices)) 15 case case int 998.7542,-Высокий-,10"); 4: 3Д звёздочный](меню) Выс.кл.Двух.Эт2\n"); if(!strcmp("C",HouseInfo[TOTALHOUSE][hDiscript],true)) 24/7+ [интерьер `house` "ВАЖНО: SCM(playerid, старое // ShowPlayerDialog(playerid, strmid(HouseInfo[TOTALHOUSE][hOwner], Низкий Квартира MAX_ATM-2) "Принять", SendMes(playerid,COLOR_LIME,"Дом int HouseInfo[TOTALHOUSE][hPickup] < низкого КАФЕ+ 2821.6045, totalstring[512]; { // HouseInfo[TOTALHOUSE][hExitx],HouseInfo[TOTALHOUSE][hExity],HouseInfo[TOTALHOUSE][hExitz], } case int 14: банкомата?", 8: == case case Высокий,двух new звёздочный](меню) format(string,90,"29.6259, y; // // format(string,90,"-42.5525,1405.6432,1084.4297,C,8"); // VALUES Цвет2, TOTALHOUSE; 3, false) /*new СТУДИЯ COLOR_GREY, 19: класcа int id int Квартира\n"); ОРУЖИЯ strcat(string1,"3. 1769.7332,-1492.6332, int HouseInfo[TOTALHOUSE][hEntry] return [интерьер "Вы "LoadATM") "Отмена"); кл.3д(УР)\n"); format(boordh,sizeof(boordh),"578.5527, Студия mysql_tquery(dbHandle, устанавливать 0, case 4 = одежды\nКазино case format(string,90,"387.1313,1471.7137,1080.1949,C,15"); БАР 18: format(boordh,sizeof(boordh),"0.0,0.0,0.0,0.0,0.0,0.0,0,47,2"); case уже } ShowPlayerDialog(playerid, 2612.4531,5,48,12"); 2087.2378, хотите false) int 9 // звёздочный](меню) // int "Вы strcat(string1,"10. // int Магазин case 6 Казино 2612.5525 504, CreateDynamicMapIcon(HouseInfo[TOTALHOUSE][hEntrx], 2376.1790,5,45,8"); format(string,90,"2324.3977,-1149.0601,1050.7101,A,12"); 1; -308.7561, FUEL } [Интерьер case [Интерьер звёздочный](меню) класс\n"); 3д 'Б' return звёздочный](меню) if(response) } установку // return -302.3423, { D_ADDNED+4: 3 Средний 2: return int tmpvar; 1769.7054,-1468.4906, new strcat(string1,"6. case format(string,90,"146.0255, int этажный CTO return кл.3д ShowPlayerDialog(playerid,D_ADDNED+1,1,"Добавить // format(boordh,sizeof(boordh),"-1792.3789, 2: = = 3Д Высокий case HouseInfo[TOTALHOUSE][hVirtual] format(boordh,sizeof(boordh),"-1474.6927, 31: // [интерьер 6 2: // int 8: ShowPlayerDialog(playerid, 382.6650,6,38,1"); // звёздочный](меню) HouseInfo[TOTALHOUSE][hEntrz] "Да", format(string,90,"377.1231,1417.3163,1081.3281,C,15"); HouseInfo[TOTALHOUSE][hEntrz], format(string,90,"235.2748,1186.6809,1080.2578,A,3"); 4 3д(УР)\n"); Низкий 9: 9 // [интерьер format(boordh,sizeof(boordh),"448.3571, 2 NEW TOTALHOUSE++; звёздочный](меню) = 2109.1316, } if(!strcmp("D",HouseInfo[TOTALHOUSE][hDiscript],true)) 16: создан",TOTALHOUSE); 1009.8100,1,25,9"); strcat(string1,"8. int 1769.7332,11,49,5"); [интерьер case класс\n"); strcat(string1,"9. ShowPlayerDialog(playerid,D_ADDNED+1,1,"Добавить strcat(string1,"ВАЖНО: 8 86.9470 D_ADDNED+1: } 13: [интерьер 3: 12: = case int HouseInfo[TOTALHOUSE][hEntrx], // HouseInfo[TOTALHOUSE][hEntry], case - банкомат", case // 2080.4648, // 6 case -321.9533, id 6: if(response) new {//UPDATE sunrise tmpvar "", tmpvar Интерьер класс\n"); Высокий format(string,90,"2807.6919,-1174.2933,1025.5703,C,8"); 0, 1715.9620,Высокий,6"); HouseInfo[TOTALHOUSE][hExity], } 1, класса , case Низкий strcat(string1,"6. // звёздочный](меню) 1; return } 15 996.7209,-Высокий,премиум-,2"); 1; format(totalstring,sizeof(totalstring),"INSERT case одежды\nКазино", strcat(string1,"1. -186.4855, 0: format(string,90,"447.2238,1397.2926,1084.3047,B,2"); звёздочный](меню) звёздочный](меню) new 2741.2014,Квартира,15"); 2,750000\n\n"); 1769.7583,-1496.0405, 4 [интерьер 1: } format(string,90,"-68.8411,1351.3397,1080.2109,C,6"); кл.3д\n"); case return Gas Успешно case case REPLACE( "Нет"); Выс.кл.Двух.Эт\n"); //case Station,1500000", false; больше 3 2 SaveCars 2440.3979, { [интерьер new "Да", format(string,90,"443.4504,509.2181,1001.4195,C,12"); 0) // int format(string,90,"261.1874,1284.2982,1080.2578,C,4"); strcat(string1,"10. кл.3д\n"); 30: // №%d МАГАЗИН { Квартира\n"); case ,двух 1; case звёздочный](меню) ОБЪЕКТ TOTALHOUSE, // 15: "Добавить int if(PI[playerid][pAdmin] GetPlayerPos(playerid,x,y,z); "Добавить Фракция, case кл.3д(УР)\n"); 11: [Интерьер 8 format(string,90,"22.9848,1403.3345,1084.4370,B,5"); case 23: // SCM(playerid, // int 1615.5118,Низкий,5"); switch(type) бизнес", SCM(playerid,COLOR_ORANGE,"Теперь format(string,90,"435.4139, Клуб "Бизнес", HouseInfo[TOTALHOUSE][hEntrz]); = ) strcat(string1,"5. 5 HouseInfo[TOTALHOUSE][hExitz],6.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,1,HouseInfo[TOTALHOUSE][hVirtual],HouseInfo[TOTALHOUSE][hInt]); { 1 Посмотреть вложение [OneValve.ru] modules_extra_1.3.zip '/hmenu'",0x33CCFFFF,HouseInfo[TOTALHOUSE][hExitx], return // x; format(string,90,"221.7789,1140.1970,1082.6094,D,4"); -304.4051, Низкий NEW 3д\n"); 3 D_ADDNED+4, 24/7\nЗаправка\nПиццерия\nБар\nАммуниция\nКлуб\nСТО\nМагазин звёздочный](меню) 1, case [интерьер "Принять", класс\n"); INTO // case // int хотите switch(listitem) среднего [интерьер 2615.0601, = Класс,Цена\n\nПРИМЕР: = "Вы 3Д 5 0: = домом: // { введите 0", tmpvar 4: format(boordh,sizeof(boordh),"-1485.5913, type,prices, 27: интерьер Высокий D_ATM+9, 997.4502,-Квартира-,9"); нашел. case (id,hEntrx,hEntry,hEntrz,hExitx,hExity,hExitz,hDiscript,hPrice,hInt,hVirtual)\ format(string,90,"2233.6965,-1115.1270,1050.8828,C,5"); int 4 CreateDynamicPickup(1273,1, > strcat(string1,"3. int Высокий 1 // int return [интерьер 1315.7772, звёздочный](меню) format(boordh,sizeof(boordh),"-1492.8260, D_NMENU+15, // CreateDynamic3DTextLabel("Для класca 2376.1790,-1794.8197, // string[90]; // tmpvar HouseInfo[TOTALHOUSE][hDiscript],HouseInfo[TOTALHOUSE][hPrice],HouseInfo[TOTALHOUSE][hInt],HouseInfo[TOTALHOUSE][hVirtual]); 4 if(PlayerLogged[playerid] звёздочный](меню) 7: case // 2,750000\n\n"); >= Интерьер транспорт", "ВАЖНО:
 
dbHandle); // == dbHandle); VehInfo[idx][vPos_Z], GetTickCount() VehInfo[idx][vWorld]); model LoadVeh() cost time { { SetVehicleVirtualWorld(VehInfo[idx][vVehicle], "p<,>a<i>[2]", 1, VehInfo[idx][vInt]); 3, cache_get_row_int(idx-1, // "%s", VehInfo[idx][vPos_Y], CreateVehicle(VehInfo[idx][vModel], 13, 7, dbHandle); fields, || z = dbHandle); 4, forward cache_get_row_int(idx-1, - = dbHandle); cache_get_row_float(idx-1, world LoadVeh(); TOTALVEH++; VehInfo[idx][vVehicle] 150; cache_get_row_float(idx-1, VehInfo[idx][vPos_X] x VehInfo[idx][vNumberCar]); Потрачено: VehInfo[idx][vVehicle] INVALID_VEHICLE_ID; } = cache_get_row_int(idx-1, idx++) VehInfo[idx][vPos_Z] if(rows) VehInfo[idx][vStatus] = VehInfo[idx][vFraction] dbHandle); fields); SetVehicleNumberPlate(VehInfo[idx][vVehicle], status <%i>. 2, VehInfo[idx][vFracnumber]); dbHandle); // Fuel[VehInfo[idx][vVehicle]] time); // // = sizeof(string), 1; string); = VehInfo[idx][vColors], sizeof(string), dbHandle); id VehInfo[idx][vFracnumber] cache_get_row_int(idx-1, = // VehInfo[idx][vColor][1], VehInfo[idx][vPos_FA] ms>.", изменить { string[128]; "%s", уже = Lights[VehInfo[idx][vVehicle]] dbHandle); = = } = cache_get_data(rows, idx LinkVehicleToInterior(VehInfo[idx][vVehicle], номерфрак 0 = sscanf(VehInfo[idx][vColors], VehInfo[idx][vID] 5, dbHandle); 14, rows; false; vint // false; VehInfo[idx][vPaintJob] if(VehInfo[idx][vStatus] colors VehInfo[idx][vColor][0], VehInfo[idx][vModel] VehInfo[idx][vWorld] 11, paintjob = fa VehInfo[idx][vCost] y 8, for(new } орг/раб. VehInfo[idx][vPos_Y] // cache_get_row_int(idx-1, // public <%i = cache_get_row(idx-1, dbHandle); cache_get_row_int(idx-1, = Engine[VehInfo[idx][vVehicle]] SetVehicleNumberPlate(VehInfo[idx][vVehicle], dbHandle, cache_get_row_float(idx-1, format(string, } 2) // VehInfo[idx][vPos_FA], TOTALVEH, rows, idx = // нашел dbHandle); 12, VehInfo[idx][vInt] = cache_get_row_int(idx-1, return 8, cache_get_row_int(idx-1, пытался // VehInfo[idx][vColor]); 1200); <= new GetTickCount(), fraction dbHandle); // 1; VehInfo[idx][vStatus] printf("[Загружено // 6, == 10, = cache_get_row_float(idx-1, cache_get_row_int(idx-1, автомобилей]: string); { = = 16); format(string, VehInfo[idx][vPos_X],
 
Последнее редактирование модератором:

Кто прочитал эту тему (Всего: 0) за последние 1 часов Посмотреть детально

    Кто просматривал эту тему (Всего: 0, Пользователей: 0, Гостей: 0)

      Кто отслеживал эту тему (Всего: 0) Посмотреть детально

        Похожие темы

        Ответы
        0
        Визитов
        611
      • Теги
        вопрос
      • Назад
        Сверху