Advertisement
Guest User

Старая система (которую нужно удалить)

a guest
Apr 24th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 97.08 KB | None | 0 0
  1. #define INVALID_HOUSE_ID INVALID_PLAYER_ID
  2. #define MAX_HOUSE_COUNT 737//Макс. к-во домов
  3.  
  4.  
  5. new gHouses[MAX_HOUSE_COUNT][HOUSE_DATA];
  6.  
  7. public OnGameModeInit()
  8. {
  9.         new Result:houses = sql_query(zConn, "SELECT * FROM `houses` ORDER BY `id`", QUERY_CACHED);
  10.     if(sql_num_rows(houses) >= MAX_HOUSE_COUNT) print("Кол-во домов в базе больше максимального");
  11.     else if(!sql_num_rows(houses)) print("Домов в базе не найдено");
  12.     else
  13.     {
  14.         gHouseCount = sql_num_rows(houses);
  15.         SetDynamicObjectMaterialText(meria[0], 0, "0", 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);
  16.         for(new i;i < gHouseCount;i++)
  17.         {
  18.             sql_fetch_row(houses,"|",zRes);
  19.             sql_next_row(houses);
  20.             sscanf(zRes,"p<|>iiiiia<i>[5]a<i>[9]a<i>[4]iiiiiffffffffis[24]a<i>[3]s[24]s[24]s[24]",gHouses[i][houseID],gHouses[i][houseClass],gHouses[i][houseDays],gHouses[i][housePrice],gHouses[i][houseHint],gHouses[i][houseImprove],gHouses[i][houseGun],gHouses[i][houseSkin],gHouses[i][houseSafeCode],gHouses[i][houseSafeMoney],gHouses[i][houseDrugs],gHouses[i][houseProducts],gHouses[i][houseClose],
  21.             gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],gHouses[i][houseR], gHouses[i][houseParkX],gHouses[i][houseParkY],gHouses[i][houseParkZ],gHouses[i][houseParkR],gHouses[i][houseOwnerID],gHouses[i][houseOwner],gHouses[i][houseHabitID],gHouseHabits[i][0],gHouseHabits[i][1],gHouseHabits[i][2]);
  22.             gHouseArea[i] = CreateDynamicSphere(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],2.0,0,0,-1);
  23.             if(gHouses[i][houseOwnerID] != 0)
  24.             {
  25.                 if(gHouses[i][houseDays] == 0)
  26.                 {
  27.                     Dolzen++;
  28.                     new str1[100],text[100];
  29.                     format(str1, 100, "%d", Dolzen);
  30.                     SetDynamicObjectMaterialText(meria[0],0, str1, 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);//Дома
  31.                     format(text, 100, "%s", gHouses[i][houseOwner]);
  32.                     strmid(DebtorInfo[Dolzen][0][aName],text,0,strlen(text),100);
  33.                     DebtorInfo[Dolzen][0][aid] = gHouses[i][houseID];
  34.                     DebtorInfo[Dolzen][0][hX] = gHouses[i][houseX];
  35.                     DebtorInfo[Dolzen][0][hY] = gHouses[i][houseY];
  36.                     DebtorInfo[Dolzen][0][hZ] = gHouses[i][houseZ];
  37.                 }
  38.                 gHousePickup[i] = CreateDynamicPickup(19522,1,gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ]);
  39.                 gHouseIcon[i] = CreateDynamicMapIcon(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],32,CWHITE);
  40.             }
  41.             else
  42.             {
  43.                 gHousePickup[i] = CreateDynamicPickup(1273,1,gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ]);
  44.                 gHouseIcon[i] = CreateDynamicMapIcon(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],31,CWHITE);
  45.             }
  46.             new hintid = gHouses[i][houseHint];
  47.             for(new k;k<5;k++) //Улучшения
  48.             {
  49.                 if(!gHouses[i][houseImprove][k]) continue;
  50.                 switch(k)
  51.                 {
  52.                     case 1: CreateDynamicObject(2332,gHintSafe[hintid][0],gHintSafe[hintid][1],gHintSafe[hintid][2],gHintSafe[hintid][3],gHintSafe[hintid][4],gHintSafe[hintid][5],i+1); //Сейф
  53.                     case 2: CreateDynamicObject(2141,gHintFreez[hintid][0],gHintFreez[hintid][1],gHintFreez[hintid][2],gHintFreez[hintid][3],gHintFreez[hintid][4],gHintFreez[hintid][5],i+1);
  54.                     case 3:
  55.                     {
  56.                         CreateDynamicObject(2708,gHintStore[hintid][0],gHintStore[hintid][1],gHintStore[hintid][2],gHintStore[hintid][3],gHintStore[hintid][4],gHintStore[hintid][5],i+1);
  57.                         new cnt;
  58.                         for(new l;l<4;l++)
  59.                         {
  60.                             if(gHouses[i][houseSkin][l]) cnt++;
  61.                         }
  62.                         cnt--;
  63.                         if(cnt < 0 && gHouses[i][houseOwnerID]) printf("Возможны лаги с одеждой в доме %d",i+1);
  64.                         else if(cnt > 0)
  65.                         {
  66.                             CreateDynamicObject(2689,gHintDress[hintid][0][0],gHintDress[hintid][0][1],gHintDress[hintid][0][2],gHintDress[hintid][0][3],gHintDress[hintid][0][4],gHintDress[hintid][0][5],i+1);
  67.                             if(cnt > 1) CreateDynamicObject(2704,gHintDress[hintid][1][0],gHintDress[hintid][1][1],gHintDress[hintid][1][2],gHintDress[hintid][1][3],gHintDress[hintid][1][4],gHintDress[hintid][1][5],i+1);
  68.                             if(cnt > 2) CreateDynamicObject(2705,gHintDress[hintid][2][0],gHintDress[hintid][2][1],gHintDress[hintid][2][2],gHintDress[hintid][2][3],gHintDress[hintid][2][4],gHintDress[hintid][2][5],i+1);
  69.                         }
  70.                         for(new l;l<9;l++)
  71.                         {
  72.                             if(!gHouses[i][houseGun][l]) continue;
  73.                             gHouseGunObject[i][l] = CreateDynamicObject(gHintGunID[l],gHintGun[hintid][l][0],gHintGun[hintid][l][1],gHintGun[hintid][l][2],gHintGun[hintid][l][3],gHintGun[hintid][l][4],gHintGun[hintid][l][5],i+1);
  74.                         }
  75.                     }
  76.                 }
  77.             }
  78.         }
  79.         sql_free_result(houses);
  80.         printf("%d houses loaded", gHouseCount);
  81.     }
  82.     for(new houseid; houseid < MAX_HOUSE_COUNT; houseid ++)
  83.     {
  84.         if(!gHouses[houseid][houseOwnerID]) continue;
  85.         new zStr[126];
  86.         format(zStr, sizeof(zStr), "SELECT * FROM `accounts` WHERE `id` = %i AND `house` = %i", gHouses[houseid][houseOwnerID], houseid+1);
  87.         new Result: howners = sql_query(zConn, zStr, QUERY_CACHED);
  88.         if(!sql_num_rows(howners))
  89.         {
  90.             format(zStr,sizeof(zStr),"UPDATE `houses` SET `ownerid` = '0', `owner` = '', improve = '0|0|0|0|0', gun = '0|0|0|0|0|0|0|0|0', skin = '0|0|0|0',safecode='0', safemoney='0', drugs='0', products='0',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='' WHERE `id` = '%d'",houseid+1);
  91.             sql_query(zConn, zStr, QUERY_THREADED);
  92.             gHouses[houseid][houseOwnerID] = 0;
  93.             strdel(gHouses[houseid][houseOwner],0,24);
  94.             strdel(gHouseHabits[houseid][0],0,24);
  95.             strdel(gHouseHabits[houseid][1],0,24);
  96.             strdel(gHouseHabits[houseid][2],0,24);
  97.             gHouses[houseid][houseHabitID][0] = 0;
  98.             gHouses[houseid][houseHabitID][1] = 0;
  99.             gHouses[houseid][houseHabitID][2] = 0;
  100.             for(new i;i<9;i++)
  101.             {
  102.                 if(i < 5)
  103.                 {
  104.                     gHouses[houseid][houseImprove][i] = 0;
  105.                     if(i < 4) gHouses[houseid][houseSkin][i] = 0;
  106.                 }
  107.                 gHouses[houseid][houseGun][i] = 0;
  108.             }
  109.             gHouses[houseid][houseSafeCode] = 0;
  110.             gHouses[houseid][houseSafeMoney] = 0;
  111.             gHouses[houseid][houseDrugs] = 0;
  112.             gHouses[houseid][houseProducts] = 0;
  113.             DestroyDynamicPickup(gHousePickup[houseid]);
  114.             gHousePickup[houseid] = CreateDynamicPickup(19522,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
  115.             DestroyDynamicMapIcon(gHouseIcon[houseid]);
  116.             gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],31,CWHITE);
  117.         }
  118.         sql_free_result(howners);
  119.     }
  120. }
  121.  
  122.  
  123. public OnPlayerSpawn(playerid)
  124. {
  125.     if(pData[playerid][pHouse] && pData[playerid][pSpawn] <= 1)
  126.     {
  127.         SetPlayerVirtualWorld(playerid,pData[playerid][pHouse]);
  128.         new interior, Float:r;
  129.         new houseid = pData[playerid][pHouse] - 1;
  130.         new hint = gHouses[houseid][houseHint];
  131.         if(pData[playerid][pFraction])
  132.         {
  133.             if(gHouses[houseid][houseImprove][3] && gHouses[houseid][houseOwnerID] == pData[playerid][pMysqlID]) SetPlayerSkin(playerid,pData[playerid][pFractionSkin]);
  134.             else SetPlayerSkin(playerid,pData[playerid][pFractionSkin]);
  135.         }
  136.         else SetPlayerSkin(playerid,pData[playerid][pSkin]);
  137.         pTemp[playerid][pSelectedHouseID] = houseid;
  138.         x = gHints[hint][hintSX];
  139.         y = gHints[hint][hintSY];
  140.         z = gHints[hint][hintSZ];
  141.         r = gHints[hint][hintSR];
  142.         interior = gHints[hint][hintInterior];
  143.         SetPlayerInterior(playerid,interior);
  144.         SetPlayerPos(playerid,x,y,z);
  145.         SetPlayerFacingAngle(playerid,r);
  146.         pTemp[playerid][pIsInHouse] = true;
  147.         if(pData[playerid][pFraction]) SetPlayerColor(playerid,gFractionColor[pData[playerid][pFraction] - 1]);
  148.     }
  149. }
  150.  
  151. CMD:exit(playerid, params[])
  152. {
  153.     if(!pTemp[playerid][pLogined]) return 1;
  154.     if(pTemp[playerid][pIsInHouse])
  155.     {
  156.         if(logExit) SendClientMessage(playerid,CWHITE,"Check 1");
  157.         new houseid = pTemp[playerid][pSelectedHouseID];
  158.         new hint = gHouses[houseid][houseHint];
  159.         new Float:x, Float:y, Float:z;
  160.         x = gHints[hint][hintX];
  161.         y = gHints[hint][hintY];
  162.         z = gHints[hint][hintZ];
  163.         if(IsPlayerInRangeOfPoint(playerid,2.0,x,y,z))
  164.         {
  165.             if(logExit) SendClientMessage(playerid,CWHITE,"Check 2");
  166.             SetPlayerInterior(playerid,0);
  167.             SetPlayerVirtualWorld(playerid,0);
  168.             pTemp[playerid][pJustTP] = true;
  169.             SetPlayerPos(playerid,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
  170.             SetPlayerFacingAngle(playerid,gHouses[houseid][houseR]);
  171.             pTemp[playerid][pIsInHouse] = false;
  172.         }
  173.     }
  174.     return true;
  175. }
  176.  
  177. CMD:home(playerid, params[])
  178. {
  179.     if(!pTemp[playerid][pLogined]) return 1;
  180.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
  181.     new classname[20];
  182.     new houseid = pData[playerid][pHouse] - 1;
  183.     switch(gHouses[houseid][houseClass])
  184.     {
  185.         case 0:classname = "Эконом";
  186.         case 1:classname = "Cредний";
  187.         case 2:classname = "Элитный";
  188.         case 3:classname = "Особняк";
  189.         default: classname = "Неизвестно";
  190.     }
  191.     new cnt;
  192.     for(new i;i<3;i++)
  193.     {
  194.         if(gHouses[houseid][houseHabitID][i]) cnt++;
  195.     }
  196.     new carname[24];
  197.     if(!pData[playerid][pCar]) strcat(carname,"Нет");
  198.     else
  199.     {
  200.         for(new i;i<MAX_VEHICLES;i++)
  201.         {
  202.             if(gCars[i][carOwnerid] == gHouses[houseid][houseOwnerID])
  203.             {
  204.                 strcat(carname,gTransport[gCars[i][carModelid]][trName]);
  205.                 break;
  206.             }
  207.         }
  208.     }
  209.     new rent = floatround(gHouses[houseid][housePrice] * 0.005);
  210.     if(gHouses[houseid][houseImprove][4]) rent = rent / 2;
  211.     new status[24];
  212.     if(gHouses[houseid][houseClose]) strcat(status,"{"#cRED"}Дом закрыт");
  213.     else strcat(status,"{"#cGREEN"}Дом открыт");
  214.     new improve[64];
  215.     if(gHouses[houseid][houseImprove][0]) strcat(improve,"  - Автом. двери\n");
  216.     if(gHouses[houseid][houseImprove][1]) strcat(improve,"  - Сейф\n");
  217.     if(gHouses[houseid][houseImprove][2]) strcat(improve,"  - Холодильник\n");
  218.     if(gHouses[houseid][houseImprove][3]) strcat(improve,"  - Шкаф\n");
  219.     if(gHouses[houseid][houseImprove][4]) strcat(improve,"  - Субсидии");
  220.     new Float:x, Float:y, Float:z, pos[15];
  221.     GetPlayerPos(playerid,x,y,z);
  222.     if(x < 0) strcat(pos,"San Fiero");
  223.     else if(y > 100.0) strcat(pos,"Las Venturas");
  224.     else strcat(pos,"Los Santos");
  225.     new string[560];
  226.     format(string, 1000, "%s"W"Класс дома: \t\t\t%s",string,classname);
  227.     format(string, 1000, "%s\n"W"Номер дома: \t\t\t%d",string,houseid+1);
  228.     format(string, 1000, "%s\n"W"Город / область: \t\t%s",string,pos);
  229.     format(string, 1000, "%s\n"W"Район: \t\t\t%s",string,GetPlayerZone(houseid, 1));
  230.     format(string, 1000, "%s\n"W"Стоимость: \t\t\t%d$",string,gHouses[houseid][housePrice]);
  231.     format(string, 1000, "%s\n"W"Дом оплачен на: \t\t%d/30 дней",string,gHouses[houseid][houseDays]);
  232.     format(string, 1000, "%s\n"W"Количество комнат: \t\t%d",string,gHouses[houseid][houseClass]);
  233.     format(string, 1000, "%s\n"W"Количество жильцов: \t%d",string,cnt);
  234.     format(string, 1000, "%s\n"W"Модель домашнего авто: \t{3399FF}%s",string,carname);
  235.     format(string, 1000, "%s\n"W"Квартплата: \t\t\t%d$ в день",string,rent);
  236.     format(string, 1000, "%s\n{EFFF0D}Уровень улучшений: \n%s",string,improve);
  237.     format(string, 1000, "%s\n"W"Статус: \t\t\t%s",string,status);
  238.     format(string, 1000, "%s\n\n{7fff00}Для открытия панели управления вашим домом",string);
  239.     format(string, 1000, "%s\n{7fff00}нажмите кнопку \"Изменить\"",string);
  240.     ShowPlayerDialog(playerid,dHouseStat,DIALOG_STYLE_MSGBOX,"{CC9900}Информация о доме",string,"Изменить", "Отмена");
  241.     return true;
  242. }
  243. CMD:liveout(playerid, params[])//выселиться из дома
  244. {
  245.     if(!pTemp[playerid][pLogined]) return 1;
  246.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У вас нет дома");
  247.     new houseid = pData[playerid][pHouse]-1;
  248.     new slot = -1;
  249.     for(new i;i<3;i++)
  250.     {
  251.         if(gHouses[houseid][houseHabitID][i] == pData[playerid][pMysqlID])
  252.         {
  253.             slot = i; break;
  254.         }
  255.     }
  256.     if(slot == -1) return SendClientMessage(playerid,CGRAY,"Вы не можете выселиться, т.к. являетесь владельцем дома");
  257.     gHouses[houseid][houseHabitID][slot] = 0;
  258.     strdel(gHouseHabits[houseid][slot],0,24);
  259.     new query[128];
  260.     format(query,sizeof(query),"UPDATE `houses` SET `inhabit%did`='0', `inhabit%d`='' WHERE `id`='%d'",slot+2,slot+2,houseid+1);
  261.     sql_query(zConn, query);
  262.     pData[playerid][pHouse] = 0;
  263.     UpdatePlayerData(playerid,"house",0);
  264.     SendClientMessage(playerid,CINFO,"Вы выселились из дома");
  265.     return true;
  266. }
  267. CMD:residents(playerid, params[])
  268. {
  269.     if(!pTemp[playerid][pLogined]) return 1;
  270.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
  271.     new houseid = pData[playerid][pHouse]-1;
  272.     if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Вы не являетесь владельцем дома в котором живете");
  273.     if(!gHouses[houseid][houseClass]) return SendClientMessage(playerid,CGRAY,"В вашем доме нет места жильцов");
  274.     new mes[128];
  275.     for(new i;i<3;i++)
  276.     {
  277.         if(gHouses[houseid][houseHabitID][i]) format(mes,sizeof(mes),"%s{"#cWHITE"}Комната[%d]: {"#cBLUE"}%s\n",mes,i+1,gHouseHabits[houseid][i]);
  278.     }
  279.     if(!strlen(mes)) format(mes,sizeof(mes),"{"#cGRAY"}Жильцов нет");
  280.     ShowPlayerDialog(playerid,dMes,0,"Жильцы",mes,"OK","");
  281.     return true;
  282. }
  283. CMD:evict(playerid, params[])
  284. {
  285.     if(!pTemp[playerid][pLogined]) return 1;
  286.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
  287.     new houseid = pData[playerid][pHouse]-1;
  288.     if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Вы не являетесь владельцем дома в котором живете");
  289.     if(sscanf(params, "u", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /evict [ID комнаты]");
  290.     new slot;
  291.     if(slot < 0 || slot > 2) return SendClientMessage(playerid,CGRAY,"Неверный ID комнаты. Используйте /residents");
  292.     if(!gHouses[houseid][houseHabitID][slot]) return SendClientMessage(playerid,CGRAY,"В этой комнате никто не живет");
  293.     new query[128];
  294.     format(query,sizeof(query),"UPDATE `houses` SET `inhabit%did`='0', `inhabit%d`='' WHERE `id`='%d'",slot+2,slot+2,houseid+1);
  295.     sql_query(zConn, query);
  296.     format(query,sizeof(query),"UPDATE `accounts` SET `house`='0' WHERE `id`='%d'",gHouses[houseid][houseHabitID][slot]);
  297.     sql_query(zConn, query);
  298.     new actplayerid = INVALID_PLAYER_ID;
  299.     foreach(new i:Player)
  300.     {
  301.         if(IsPlayerConnected(i) && pData[i][pMysqlID] == gHouses[houseid][houseHabitID][slot])
  302.         {
  303.             actplayerid = i;
  304.             break;
  305.         }
  306.     }
  307.     if(actplayerid != INVALID_PLAYER_ID)
  308.     {
  309.         pData[actplayerid][pHouse] = 0;
  310.         SendClientMessage(actplayerid,CINFO,"Вас Выселили из дома");
  311.     }
  312.     new mes[128];
  313.     format(mes,sizeof(mes),"%s {"#cINFO"} был Выселен из вашего дома",gHouseHabits[houseid][slot]);
  314.     SendClientMessage(playerid,CWHITE,mes);
  315.     gHouses[houseid][houseHabitID][slot] = 0;
  316.     strdel(gHouseHabits[houseid][slot],0,24);
  317.     return true;
  318. }
  319.  
  320.  
  321.  
  322. CMD:store(playerid, params[])
  323. {
  324.     if(!pTemp[playerid][pLogined]) return 1;
  325.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CWHITE,"У Вас нет дома");
  326.     new houseid = pData[playerid][pHouse] - 1;
  327.     if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Только владелец дома может пользоваться шкафом");
  328.     if(!gHouses[houseid][houseImprove][3]) return SendClientMessage(playerid,CGRAY,"У Вас нет шкафа");
  329.     new hintid = gHouses[houseid][houseHint];
  330.     if(!IsPlayerInDynamicArea(playerid,gHintStoreArea[hintid])) return SendClientMessage(playerid,CGRAY,"Вы должны быть возле шкафа");
  331.     ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
  332.     return true;
  333. }
  334. CMD:safe(playerid, params[])
  335. {
  336.     if(!pTemp[playerid][pLogined]) return 1;
  337.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CWHITE,"У Вас нет дома");
  338.     new houseid = pData[playerid][pHouse] - 1;
  339.     new hintid = gHouses[houseid][houseHint];
  340.     if(!gHouses[houseid][houseImprove][1]) return SendClientMessage(playerid,CGRAY,"У Вас нет сейфа");
  341.     if(!IsPlayerInDynamicArea(playerid,gHintSafeArea[hintid])) return SendClientMessage(playerid,CGRAY,"Вы должны быть возле сейфа");
  342.     ShowPlayerDialog(playerid,dSafeCode,1,"Сейф","{"#cWHITE"}Введите код от сейфа:","ОК","Отмена");
  343.     return true;
  344. }
  345. CMD:freez(playerid, params[])
  346. {
  347.     if(!pTemp[playerid][pLogined]) return 1;
  348.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CWHITE,"У Вас нет дома");
  349.     new houseid = pData[playerid][pHouse] - 1;
  350.     new hintid = gHouses[houseid][houseHint];
  351.     if(!gHouses[houseid][houseImprove][2]) return SendClientMessage(playerid,CGRAY,"У Вас нет холодильника");
  352.     if(!IsPlayerInDynamicArea(playerid,gHintFreezArea[hintid])) return SendClientMessage(playerid,CGRAY,"Вы должны быть возле холодильника");
  353.     ShowPlayerDialog(playerid,dFreez,2,"Холодильник","Хот-дог ({"#cRED"}-10 прод. {"#cGREEN"}+20 сытость{"#cWHITE"})\nБургер ({"#cRED"}-15 прод. {"#cGREEN"}+30 сытость{"#cWHITE"})\nПицца ({"#cRED"}-30 прод. {"#cGREEN"}+60 сытость{"#cWHITE"})","Съесть","Отмена");
  354.     return true;
  355. }
  356. CMD:getclass(playerid, params[])
  357. {
  358.     if(!pTemp[playerid][pLogined]) return 1;
  359.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,CGRAY,"Не в машине");
  360.     new vehicleid = GetPlayerVehicleID(playerid);
  361.     new model = GetVehicleModel(vehicleid);
  362.     new modelid = model-400;
  363.     new mes[128],classname[24];
  364.     GetCarClassName(gTransport[modelid][trClass],classname);
  365.     format(mes,sizeof(mes),"Класс %s",classname);
  366.     SendClientMessage(playerid,CWHITE,mes);
  367.     return true;
  368. }
  369.  
  370. CMD:leave(playerid, params[])
  371. {
  372.     //...
  373.     new houseid = pData[playerid][pHouse]-1;
  374.     if(!(houseid+1) || ((houseid+1) > 0 && pData[playerid][pMysqlID] != gHouses[houseid][houseOwnerID])) SetPlayerSkin(playerid,pData[playerid][pSkin]);
  375.     else if(!gHouses[houseid][houseImprove][3]) SetPlayerSkin(playerid,pData[playerid][pSkin]);
  376.     else
  377.     {
  378.         for(new x; x < 3; x ++)
  379.         {
  380.             if(!gHouses[houseid][houseSkin]) continue;
  381.             pData[playerid][pSkin] = gHouses[houseid][houseSkin];
  382.             if(GetPlayerSkin(playerid) == gHouses[houseid][houseSkin][3]) SetPlayerSkin(playerid,pData[playerid][pSkin]);
  383.         }
  384.         gHouses[houseid][houseSkin][3] = 0;
  385.         UpdateHouseDress(houseid);
  386.     }
  387.     //...
  388.     return 1;
  389. }
  390.  
  391.  
  392. CMD:hcar(playerid, params[])
  393. {
  394.     if(dikg3dadminslogin[playerid] == false) return 1;
  395.     if(!pTemp[playerid][pLogined]) return 1;
  396.     if(pData[playerid][pAdmin] < 6) return 1;
  397.     if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /hcar [ID дома]");
  398.     if(params[0] < 1 || params[0] > MAX_HOUSE_COUNT) return SendClientMessage(playerid,CGRAY,"Значение Выходит за допустимые пределы");
  399.     if(!IsPlayerInAnyVehicle(playerid)) return SendClientMessage(playerid,CGRAY,"Вы должны быть в машине");
  400.     new vehicleid = GetPlayerVehicleID(playerid);
  401.     new Float:x, Float:y, Float:z, Float:r;
  402.     GetVehiclePos(vehicleid,x,y,z);
  403.     GetVehicleZAngle(vehicleid,r);
  404.     new query[512];
  405.     format(query,sizeof(query),"UPDATE `houses` SET `parkx`='%.4f', `parky`='%.4f', `parkz`='%.4f', `parkr`='%.4f' WHERE `id`='%d'",x,y,z,r,params[0]);
  406.     sql_query(zConn, query, QUERY_THREADED);
  407.     SendClientMessage(playerid,CGREEN,"Парковочное место к дому установлено");
  408.     new i = params[0] - 1;
  409.     gHouses[i][houseParkX] = x;
  410.     gHouses[i][houseParkY] = y;
  411.     gHouses[i][houseParkZ] = z;
  412.     gHouses[i][houseParkR] = r;
  413.     return true;
  414. }
  415.  
  416.  
  417. CMD:house(playerid, params[])
  418. {
  419.     if(dikg3dadminslogin[playerid] == false) return 1;
  420.     if(!pTemp[playerid][pLogined]) return 1;
  421.     if(pData[playerid][pAdmin] < 3) return 1;
  422.     if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /house [ID]");
  423.     if(params[0] < 1 || params[0] > MAX_HOUSE_COUNT) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Неверный [ID]!");
  424.     SetPlayerPos(playerid,gHouses[params[0]-1][houseX],gHouses[params[0]-1][houseY],gHouses[params[0]-1][houseZ]);
  425.     SetPlayerInterior(playerid, 0);
  426.     SetPlayerVirtualWorld(playerid, 0);
  427.     return true;
  428. }
  429.  
  430.    
  431. CMD:fwarn(playerid,params[])
  432. {
  433.     //...
  434.     new houseid = pData[params[0]][pHouse]-1;//Узнаем id дома игрока
  435.     if(!(houseid+1) || ((houseid+1) > 0 && pData[params[0]][pMysqlID] != gHouses[houseid][houseOwnerID])) SetPlayerSkin(params[0],pData[params[0]][pSkin]);
  436.     else if(!gHouses[houseid][houseImprove][3]) SetPlayerSkin(params[0],pData[params[0]][pSkin]);
  437.     else
  438.     {
  439.         for(new x; x < 3; x ++)
  440.         {
  441.             if(!gHouses[houseid][houseSkin]) continue;
  442.             pData[params[0]][pSkin] = gHouses[houseid][houseSkin];
  443.             if(GetPlayerSkin(params[0]) == gHouses[houseid][houseSkin][3]) SetPlayerSkin(params[0],pData[params[0]][pSkin]);
  444.         }
  445.         gHouses[houseid][houseSkin][3] = 0;
  446.  
  447.         UpdateHouseDress(houseid);
  448.     }
  449.  
  450.     //...
  451.     return 1;
  452. }      
  453.  
  454. CMD:okay(playerid, params[])
  455. {
  456.     //...
  457.     if(pData[params[0]][pHouse])
  458.     {
  459.         new houseid = pData[params[0]][pHouse] - 1;
  460.         if(gHouses[houseid][houseOwnerID] == pData[params[0]][pMysqlID])
  461.         {
  462.             format(gHouses[houseid][houseOwner],MAX_PLAYER_NAME,"%s",nickname);
  463.             format(query,sizeof(query),"UPDATE `houses` SET `owner` = '%s' WHERE `id` = '%d'",nickname,houseid+1);
  464.             sql_query(zConn, query);
  465.         }
  466.         else
  467.         {
  468.             new slot = -1;
  469.             if(gHouses[houseid][houseHabitID][0] == pData[params[0]][pMysqlID]) slot = 0;
  470.             else if(gHouses[houseid][houseHabitID][1] == pData[params[0]][pMysqlID]) slot = 1;
  471.             else if(gHouses[houseid][houseHabitID][2] == pData[params[0]][pMysqlID]) slot = 2;
  472.             else return SendClientMessage(params[0],CGRAY,"Ошибка (#122)");
  473.             format(gHouseHabits[houseid][slot],MAX_PLAYER_NAME,"%s",nickname);
  474.             format(query,sizeof(query),"UPDATE `houses` SET `inhabit%d`='%s' WHERE `id`='%d'",slot+2,nickname,houseid+1);
  475.             sql_query(zConn, query);
  476.         }
  477.     }
  478.     //...
  479.     return 1;
  480. }    
  481.  
  482. CMD:sellmycar(playerid, params[])
  483. {
  484.     //...
  485.     new houseid = pData[params[0]][pHouse]-1;
  486.     if(gHouses[houseid][houseOwnerID] != pData[params[0]][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Машина может быть только у владельца дома");
  487.     //...
  488.     return 1;
  489. }
  490.  
  491.  
  492. CMD:sellmyhouse(playerid, params[])
  493. {
  494.     if(!pTemp[playerid][pLogined]) return 1;
  495.     if(sscanf(params,"dd", params[0],params[1])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /sellmyhouse [id] [цена]");
  496.     if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
  497.     if(pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У Вас есть машина. Вы должны продать её прежде чем продавать дом");
  498.     new houseid = pData[playerid][pHouse]-1;
  499.     if(gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID]) return SendClientMessage(playerid,CGRAY,"Вы не являетесь владельцем дома в котором живете");
  500.     if(pTemp[playerid][pTaxiID] != INVALID_VEHICLE_ID || pTemp[playerid][pTaxiPass] != INVALID_PLAYER_ID) return SendClientMessage(playerid,CGRAY,"Нельзя использовать данную Команду сейчас");
  501.     if(params[1] < gHouses[houseid][housePrice] || params[1] > gHouses[houseid][housePrice] * 3)
  502.     {
  503.         new goscena1[128];
  504.         format(goscena1,sizeof(goscena1), "Цена не может быть меньше %d$ и больше %d$", gHouses[houseid][housePrice],gHouses[houseid][housePrice]*3);
  505.         SendClientMessage(playerid,CGRAY,goscena1);
  506.         return 1;
  507.     }
  508.     if(!IsPlayerConnected(params[0]) || playerid == params[0]) return SendClientMessage(playerid,CGRAY,"Неверный ID игрока");
  509.     if(pData[params[0]][pHouse]) return SendClientMessage(playerid,CGRAY,"У игрока уже есть дом");
  510.     if(GetPlayerDistanceToPlayer(playerid,params[0]) > 3.0 || GetPlayerVirtualWorld(playerid) != GetPlayerVirtualWorld(params[0])) return SendClientMessage(playerid,CGRAY,"Вы далеко друг от друга");
  511.     new mes[310],classname[30],housenumber[12];
  512.     if(pData[playerid][pHouse])
  513.     {
  514.         format(housenumber,12, "%d", pData[playerid][pHouse]);
  515.         switch(gHouses[pData[playerid][pHouse]-1][houseClass])
  516.         {
  517.             case 0:classname = "дом эконом класса №";
  518.             case 1:classname = "дом среднего класса №";
  519.             case 2:classname = "элитный дом №";
  520.             case 3:classname = "особняк №";
  521.             default: classname = "[Неизвестно]";
  522.         }
  523.     }
  524.     format(mes,sizeof(mes),"Вы предложили {FF6600}%s{3399FF} купить Ваш дом за {00CC00}%d$",pData[params[0]][pNickname],params[1]);
  525.     SendClientMessage(playerid,0x3399FFFF,mes);
  526.     format(mes,sizeof(mes),"%s предлагает вам купить его %s %s за {00CC00}%d$",pData[playerid][pNickname],classname,housenumber,params[1]);
  527.     SendClientMessage(params[0],0x3399FFFF,mes);
  528.     SendClientMessage(params[0],-1, "Нажмите {00CC00}Y "W"чтобы согласиться или {FF6600}N "W"для отказа");
  529.  
  530.  
  531.     pTemp[playerid][pSellHouseOffer] = playerid;
  532.     pTemp[params[0]][pSellHouseOffer] = playerid;
  533.     pTemp[params[0]][pSellHouseOffee] = params[0];
  534.     pTemp[params[0]][pSellHousePrice] = params[1];
  535.     pTemp[params[0]][pSellHouseID] = houseid;
  536.     return true;
  537. }
  538.  
  539.  
  540. CMD:debtorhouse(playerid, params[])
  541. {
  542.     if(!pTemp[playerid][pLogined]) return 1;
  543.     if(sscanf(params, "d", params[0])) return SendClientMessage(playerid, CYELLOW, "• [Подсказка]:{"#cWHITE"} /debtorhouse [ID]");
  544.     new houseid = params[0]-1;
  545.     new ownerid = GetPlayerID(gHouses[houseid][houseOwner]);
  546.     if(!IsAbleToHire(playerid)) return SendErr(playerid,"Ваш ранг недостаточен");
  547.     new Float:pos[3], full = 0;
  548.     GetPlayerPos(playerid, pos[0], pos[1], pos[2]);
  549.     for(new i;i<MAX_PLAYERS;i++)
  550.     {
  551.         if(IsPlayerInRangeOfPoint(i, 15.0, pos[0], pos[1], pos[2]))
  552.         {
  553.             if(pData[playerid][pSubfraction] == pData[i][pSubfraction] && pData[i][pRank] > 3)
  554.             {
  555.                 if(i >= 2)
  556.                 {
  557.                     full = 1;
  558.                     break;
  559.                 }
  560.             }
  561.         }
  562.     }
  563.     if(full == 0) return SendErr(playerid, "Рядом нет двух сотрудников вашей организации");
  564.     new querysell[500];
  565.     if(gHouses[houseid][houseDays] <= 0 && gHouses[houseid][houseOwnerID] >= 1)
  566.     {
  567.         if(pData[ownerid][pCar])
  568.         {
  569.             new carID = GetCarSlot(pData[ownerid][pCar]); new vehicleid = gCars[carID][carVid]; new modelid = GetVehicleModel(vehicleid) - 400;
  570.             new carprice = floatround(gTransport[modelid][trPrice]/100*80);
  571.             if(pData[ownerid][pStatus] == 1)
  572.             {
  573.                 pData[ownerid][pCar] = 0;
  574.                 UpdatePlayerData(ownerid,"car", pData[ownerid][pCar]);
  575.                 pData[ownerid][pReturnCarMoney] += carprice;
  576.                 UpdatePlayerData(ownerid,"returncar", pData[ownerid][pReturnCarMoney]);
  577.                 format(querysell,sizeof(querysell), "DELETE FROM `cars` WHERE `id` = '%d'",pData[ownerid][pCar]);
  578.                 sql_query(zConn, querysell);
  579.                 DestroyVehicle(gCars[carID][carVid]);
  580.                 SendClientMessage(playerid,0xFF7F50ff,"Машина продана в онлайне");
  581.             }
  582.             else if(pData[ownerid][pStatus] == 0)
  583.             {
  584.                 format(querysell,sizeof(querysell),"UPDATE `accounts` SET returncar = '+%s', car = '0' WHERE id = '%d'", carprice, gHouses[houseid][houseOwnerID]);
  585.                 sql_query(zConn, querysell);
  586.                 format(querysell,sizeof(querysell), "DELETE FROM `cars` WHERE `id` = '%d'",pData[ownerid][pCar]);
  587.                 sql_query(zConn, querysell);
  588.                 SendClientMessage(playerid,0xFF7F50ff,"Машина продана в офлайне");
  589.             }
  590.         }
  591.         new houseprice = floatround(gHouses[houseid][housePrice]/100*80);
  592.         format(querysell,sizeof(querysell),"UPDATE `houses` SET `ownerid` = '0', `owner` = '', improve = '0|0|0|0|0', gun = '0|0|0|0|0|0|0|0|0', skin = '0|0|0|0',safecode='0', safemoney='0', drugs='0', products='0',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='',days='3' WHERE `id` = '%d'",houseid+1);
  593.         sql_query(zConn, querysell);
  594.         gHouses[houseid][houseOwnerID] = 0;
  595.         strdel(gHouses[houseid][houseOwner],0,24);
  596.         strdel(gHouseHabits[houseid][0],0,24);
  597.         strdel(gHouseHabits[houseid][1],0,24);
  598.         strdel(gHouseHabits[houseid][2],0,24);
  599.         gHouses[houseid][houseHabitID][0] = 0;
  600.         gHouses[houseid][houseHabitID][1] = 0;
  601.         gHouses[houseid][houseHabitID][2] = 0;
  602.         for(new j;j<9;j++)
  603.         {
  604.             if(j < 5)
  605.             {
  606.                 gHouses[houseid][houseImprove][j] = 0;
  607.                 if(j < 4) gHouses[houseid][houseSkin][j] = 0;
  608.             }
  609.             gHouses[houseid][houseGun][j] = 0;
  610.         }
  611.         gHouses[houseid][houseSafeCode] = 0;
  612.         gHouses[houseid][houseSafeMoney] = 0;
  613.         gHouses[houseid][houseDrugs] = 0;
  614.         gHouses[houseid][houseDays] = 3;
  615.         gHouses[houseid][houseProducts] = 0;
  616.         for(new i;i<MAX_PLAYERS;i++)
  617.         {
  618.             if(IsPlayerInRangeOfPoint(i, 15.0, pos[0], pos[1], pos[2]))
  619.             {
  620.                 if(pData[playerid][pSubfraction] == pData[i][pSubfraction])
  621.                 {
  622.                     TransferMoney(-1,i,400,"debtor");
  623.                     SendClientMessage(i,0xFF7F50ff,"Должник выселен");
  624.                     break;
  625.                 }
  626.             }
  627.         }
  628.         TransferMoney(-1,playerid,400,"debtor");
  629.         SendClientMessage(playerid,0xFF7F50ff,"Должник выселен");
  630.         Dolzen--;
  631.         new str1[100];
  632.         format(str1, 100, "%i", Dolzen);
  633.         SetDynamicObjectMaterialText(meria[0], 0, str1, 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);
  634.         if(Dolzen == 0) SetDynamicObjectMaterialText(meria[0],0, "0", 80, "Quartz MS", 50, 1, 0xFF00FFFF, 0x00000000, 1);
  635.         DestroyDynamicPickup(gHousePickup[houseid]);
  636.         gHousePickup[houseid] = CreateDynamicPickup(1273,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
  637.         DestroyDynamicMapIcon(gHouseIcon[houseid]);
  638.         gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],31,CWHITE);
  639.  
  640.         if(pData[ownerid][pStatus] == 1)
  641.         {
  642.             pData[ownerid][pHouse] = 0;
  643.             pData[ownerid][pReturnHouseMoney] += houseprice;
  644.             UpdatePlayerData(ownerid,"returnhouse", pData[ownerid][pReturnHouseMoney]);
  645.             UpdatePlayerData(ownerid,"house", pData[ownerid][pHouse]);
  646.             SendClientMessage(ownerid,CGRAY,"Ваш дом был продан государству за неуплату налогов");
  647.             SendClientMessage(ownerid,-1,"Если у Вас был транспорт, он тоже был продан");
  648.             SendClientMessage(ownerid,0xFF7F50ff,"* Вы можете вернуть 80 процентов от стоимости списанного имущества");
  649.             SendClientMessage(ownerid,0xFF7F50ff,"* Для этого введите команду {1E90FF}/returnmoney");
  650.             SendClientMessage(playerid,0xFF7F50ff,"Дом продан в онлайне");
  651.         }
  652.         else if(pData[ownerid][pStatus] == 0)
  653.         {
  654.             pData[ownerid][pReturnHouseMoney] += houseprice;
  655.             format(querysell,sizeof(querysell),"UPDATE `accounts` SET econfirmed = '1' WHERE id = '%i'",gHouses[houseid][houseOwnerID]);
  656.             sql_query(zConn, querysell);
  657.             format(querysell,sizeof(querysell),"UPDATE `accounts` SET house = '0', spawn = '0' ,returnhouse = '+%i', house = '0' WHERE id = '%d'", floatround(gHouses[houseid][housePrice]/100*80), gHouses[houseid][houseOwnerID]);
  658.             sql_query(zConn,querysell);
  659.             SendClientMessage(playerid,0xFF7F50ff,"Дом продан в офлайне");
  660.         }
  661.     }
  662.     else SendErr(playerid, "Владелец этого дома не должник");
  663.     return true;
  664. }
  665.  
  666.  
  667.  
  668. public OnPlayerEnterDynamicArea(playerid, areaid)
  669. {
  670.     if(areaid >= gHouseArea[0] && areaid <= gHouseArea[gHouseCount-1])
  671.     {
  672.         if(pTemp[playerid][pJustTP])
  673.         {
  674.             pTemp[playerid][pJustTP] = false;
  675.             return 1;
  676.         }
  677.         new houseid=areaid - gHouseArea[0];
  678.         if(houseid == -1) return 1;
  679.         pTemp[playerid][pSelectedHouseID] = houseid;
  680.         new mes[240];
  681.         new classname[20],Float:x, Float:y, Float:z, pos[15];
  682.         GetPlayerPos(playerid,x,y,z);
  683.         if(x < 0) strcat(pos,"San Fiero");
  684.         else if(y > 100.0) strcat(pos,"Las Venturas");
  685.         else strcat(pos,"Los Santos");
  686.         switch(gHouses[houseid][houseClass])
  687.         {
  688.             case 0:classname = "Эконом класс";
  689.             case 1:classname = "Cредний класс";
  690.             case 2:classname = "Элитные апартаменты";
  691.             case 3:classname = "Особняк";
  692.             default: classname = "Неизвестно";
  693.         }
  694.         if(!IsPlayerInAnyVehicle(playerid))
  695.         {
  696.             if(!gHouses[houseid][houseOwnerID]) // на продажу
  697.             {
  698.                 format(mes,sizeof(mes),""W"Стоимость дома: {2D6323}%d$\n"W"Тип: %s\n\n"W"Адрес: {628A89}г. %s, %s, дом №%d",gHouses[houseid][housePrice],classname,pos,GetPlayerZone(houseid, 1),gHouses[houseid][houseID]);
  699.                 ShowPlayerDialog(playerid,dHouseInfo,0,"Продается",mes,"Купить","Отмена");
  700.             }
  701.             else
  702.             {
  703.                 format(mes,sizeof(mes),""W"Собственник: {33CCFF}%s\n"W"Стоимость дома: {2D6323}%d$\n"W"Тип: %s\n\n"W"Адрес: {628A89}г.%s, %s, дом №%d",gHouses[houseid][houseOwner],gHouses[houseid][housePrice],classname,pos,GetPlayerZone(houseid, 1),gHouses[houseid][houseID]);
  704.                 ShowPlayerDialog(playerid,dHouseInfo,0,"{FF9900}Дом занят",mes,"Войти","Отмена");
  705.             }
  706.         }
  707.     }
  708.  
  709.  
  710.  
  711.     /*if(areaid >= gBintBuyArea[0] && areaid <= gBintBuyArea[BINT_COUNT-1])
  712.     {
  713.         new id = pTemp[playerid][pSelectedBusinessID];
  714.         if(id < 0) return 1;
  715.         new products = gBusiness[id][busiProduct];
  716.         if(gBusiness[id][busiOwnerID])
  717.         {
  718.             if(!products) return SendClientMessage(playerid,CGRAY,"К сожалению, товара не осталось");
  719.         }
  720.         new type = gBusiness[id][busiType];
  721.         switch(type)
  722.         {
  723.             case 1: // Прод. магазин
  724.             {*/
  725.                 if(!pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас нет дома");
  726.                 new houseid = pData[playerid][pHouse]-1;
  727.                 if(!gHouses[houseid][houseImprove][2]) return SendClientMessage(playerid,CGRAY,"У Вас дома нет холодильника");
  728.                 if(pTemp[playerid][pCarryProducts]) return SendClientMessage(playerid,CGRAY,"Вы уже купили продукты");
  729.                 ShowPlayerDialog(playerid,dGrocer,1,"Магазин продуктов","{"#cWHITE"}Здесь Вы можете купить продукты которые будут храниться в вашем холодильнике\nУкажите количество продуктов которое Вы хотите купить:","ОК","Отмена");
  730.             /*}
  731.         }
  732.     }*/
  733.  
  734.  
  735.     //DeimoS - Укладка продуктов в холодильник 
  736.     if(areaid >= gHintFreezArea[0] && areaid <= gHintFreezArea[HINTS_COUNT-1])
  737.     {
  738.         new houseid = pTemp[playerid][pSelectedHouseID];
  739.         if(pData[playerid][pHouse] == houseid+1)
  740.         {
  741.             if(pTemp[playerid][pCarryProducts] && pTemp[playerid][pIsInHouse])
  742.             {
  743.                 new products = pTemp[playerid][pCarryProducts];
  744.                 new query[128];
  745.                 format(query,sizeof(query),"UPDATE `houses` SET `products` = '%d' WHERE `id` = '%d'",gHouses[houseid][houseProducts] + products,houseid+1);
  746.                 sql_query(zConn, query);
  747.                 gHouses[houseid][houseProducts] += products;
  748.                 pTemp[playerid][pCarryProducts] = 0;
  749.                 MeAction(playerid,"положил(а) продукты в холодильник");
  750.             }
  751.         }
  752.     }  
  753.     return 1;
  754. }
  755.  
  756.  
  757. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  758. {
  759.     if(newkeys & KEY_YES)
  760.     {
  761.         if(pTemp[playerid][pSellHouseOffee] == playerid) //Согласился купить дом
  762.         {
  763.             new houseid = pTemp[playerid][pSellHouseID];
  764.             new price = pTemp[playerid][pSellHousePrice];
  765.             new offerid = pTemp[playerid][pSellHouseOffer];
  766.             if(!gHouses[houseid][houseOwnerID] || !pData[offerid][pHouse])
  767.             {
  768.                 SendClientMessage(playerid,CGRAY,"Дом был продан в гос.");
  769.                 pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  770.                 pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  771.                 pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
  772.                 pTemp[playerid][pSellHousePrice] = 0;
  773.                 pTemp[playerid][pSellHouseID] = 0;
  774.                 return 1;
  775.             }
  776.             if(pTemp[offerid][pSellHouseOffer] == INVALID_PLAYER_ID || !IsPlayerConnected(offerid))
  777.             {
  778.                 SendClientMessage(playerid,CGRAY,"Продавец вышел из игры, либо продал дом другому игроку");
  779.                 pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  780.                 pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  781.                 pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
  782.                 pTemp[playerid][pSellHousePrice] = 0;
  783.                 pTemp[playerid][pSellHouseID] = 0;
  784.                 return 1;
  785.             }
  786.             if(GetPlayerMoneyEx(playerid) < price)
  787.             {
  788.                 SendClientMessage(playerid,CGRAY,"У Вас недостаточно денег на руках");
  789.                 SendClientMessage(offerid,CGRAY,"У покупателя недостаточно денег");
  790.                 pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  791.                 pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  792.                 pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
  793.                 pTemp[playerid][pSellHousePrice] = 0;
  794.                 pTemp[playerid][pSellHouseID] = 0;
  795.                 return 1;
  796.             }
  797.             UpdatePlayerData(offerid,"house",0);
  798.             UpdatePlayerData(playerid,"house",houseid+1);
  799.             new query[256], str[128];
  800.             format(query,sizeof(query),"UPDATE `houses` SET `ownerid` = '%d', owner = '%s',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='' WHERE `id` = '%d'",pData[playerid][pMysqlID],pData[playerid][pNickname],houseid+1);
  801.             sql_query(zConn, query);
  802.             TransferMoney(playerid,offerid,price,"sellhouse");
  803.             format(str, sizeof(str), "~r~ -%d$",price);
  804.             GameTextForPlayer(playerid,str,2000,1);
  805.             format(str, sizeof(str), "~g~ +%d$",price);
  806.             GameTextForPlayer(offerid,str,5000,1);
  807.             pData[playerid][pHouse] = houseid+1;
  808.             pData[offerid][pHouse] = 0;
  809.             gHouses[houseid][houseOwnerID] = pData[playerid][pMysqlID];
  810.             format(gHouses[houseid][houseOwner],MAX_PLAYER_NAME,"%s",pData[playerid][pNickname]);
  811.             strdel(gHouseHabits[houseid][0],0,24);
  812.             strdel(gHouseHabits[houseid][1],0,24);
  813.             strdel(gHouseHabits[houseid][2],0,24);
  814.             gHouses[houseid][houseHabitID][0] = 0;
  815.             gHouses[houseid][houseHabitID][1] = 0;
  816.             gHouses[houseid][houseHabitID][2] = 0;
  817.             gHouses[houseid][houseSkin][1] = 0;
  818.             gHouses[houseid][houseSkin][2] = 0;
  819.             gHouses[houseid][houseSkin][3] = 0;
  820.             if(pData[playerid][pFraction]) gHouses[houseid][houseSkin][3] = pData[playerid][pFractionSkin];
  821.             UpdateHouseDress(houseid);
  822.             if(pData[offerid][pFraction]) SetPlayerSkin(offerid,pData[offerid][pFractionSkin]);
  823.             SendClientMessage(playerid,0x66CC00FF,"Поздравляем, Вы купили дом");
  824.             SendClientMessage(playerid,0x66CC00FF,"Напишите {3399FF}/home {66CC00}чтобы узнать о возможностях");
  825.             SendClientMessage(playerid,0xEFFF12FF, "Настоятельно рекомендуем проверить кварплату. При необходимости заплатить за дом в банке");
  826.             SendClientMessage(offerid,0x66CC00FF,"Дом продан");
  827.             pTemp[offerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  828.             pTemp[playerid][pSellHouseOffer] = INVALID_PLAYER_ID;
  829.             pTemp[playerid][pSellHouseOffee] = INVALID_PLAYER_ID;
  830.             pTemp[playerid][pSellHousePrice] = 0;
  831.             pTemp[playerid][pSellHouseID] = 0;
  832.  
  833.         }
  834.  
  835.         if(pTemp[playerid][pSettleHouseOffee] == playerid)
  836.         {
  837.             new houseid = pTemp[playerid][pSettleHouseID];
  838.             new offerid = pTemp[playerid][pSettleHouseOffer];
  839.             if(pTemp[offerid][pSettleHouseOffer] == INVALID_PLAYER_ID || !IsPlayerConnected(offerid))
  840.             {
  841.                 SendClientMessage(playerid,CGRAY,"Тот, кто предлагал поселиться у него дома вышел из игры");
  842.                 pTemp[offerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
  843.                 pTemp[playerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
  844.                 pTemp[playerid][pSettleHouseOffee] = INVALID_PLAYER_ID;
  845.                 pTemp[playerid][pSettleHouseID] = 0;
  846.                 return 1;
  847.             }
  848.             new slot=-1;
  849.             for(new i;i<gHouses[houseid][houseClass];i++)
  850.             {
  851.                 if(!gHouses[houseid][houseHabitID][i]) {slot = i; break;}
  852.             }
  853.             if(slot == -1)
  854.             {
  855.                 SendClientMessage(playerid,CGRAY,"В доме нет места");
  856.                 SendClientMessage(offerid,CGRAY,"В доме нет места");
  857.                 pTemp[offerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
  858.                 pTemp[playerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
  859.                 pTemp[playerid][pSettleHouseOffee] = INVALID_PLAYER_ID;
  860.                 pTemp[playerid][pSettleHouseID] = 0;
  861.             }
  862.             UpdatePlayerData(playerid,"house",houseid+1);
  863.             new query[128];
  864.             format(query,sizeof(query),"UPDATE `houses` SET `inhabit%did`='%d', `inhabit%d`='%s' WHERE `id`='%d'",slot+2,pData[playerid][pMysqlID],slot+2,pData[playerid][pNickname],houseid+1);
  865.             sql_query(zConn, query);
  866.             SFCM(playerid,CINFO,"Вы стали жильцом в доме {"#cWHITE"}%s",pData[offerid][pNickname]);
  867.             SFCM(offerid,CINFO,"Вы приняли {"#cWHITE"}%s {"#cINFO"}жильцом в свой дом",pData[playerid][pNickname]);
  868.             pData[playerid][pHouse] = houseid+1;
  869.             gHouses[houseid][houseHabitID][slot] = pData[playerid][pMysqlID];
  870.             format(gHouseHabits[houseid][slot],MAX_PLAYER_NAME,"%s",pData[playerid][pNickname]);
  871.             pTemp[offerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
  872.             pTemp[playerid][pSettleHouseOffer] = INVALID_PLAYER_ID;
  873.             pTemp[playerid][pSettleHouseOffee] = INVALID_PLAYER_ID;
  874.             pTemp[playerid][pSettleHouseID] = 0;
  875.         }
  876.  
  877.     }
  878.     if (newkeys & KEY_WALK)
  879.     {
  880.         if(pTemp[playerid][pIsInHouse])
  881.         {
  882.             new houseid = pTemp[playerid][pSelectedHouseID];
  883.             if(gHouses[houseid][houseImprove][0])
  884.             {
  885.                 new hint = gHouses[houseid][houseHint];
  886.                 new Float:x, Float:y, Float:z;
  887.                 x = gHints[hint][hintX];
  888.                 y = gHints[hint][hintY];
  889.                 z = gHints[hint][hintZ];
  890.                 if(IsPlayerInRangeOfPoint(playerid,2.0,x,y,z))
  891.                 {
  892.                     SetPlayerInterior(playerid,0);
  893.                     SetPlayerVirtualWorld(playerid,0);
  894.                     pTemp[playerid][pJustTP] = true;
  895.                     SetPlayerPos(playerid,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
  896.                     SetPlayerFacingAngle(playerid,gHouses[houseid][houseR]);
  897.                     pTemp[playerid][pIsInHouse] = false;
  898.                 }
  899.             }
  900.         }
  901.     }
  902.     if (newkeys & KEY_CTRL_BACK)
  903.     {
  904.         new houseid = pData[playerid][pHouse]-1;
  905.         if(pData[playerid][pHouse] && pTemp[playerid][pSelectedHouseID])
  906.         {
  907.             if(gHouses[houseid][houseOwnerID] == pData[playerid][pMysqlID]) {
  908.                 new hintid = gHouses[houseid][houseHint];
  909.                 if(gHouses[houseid][houseImprove][2] && IsPlayerInDynamicArea(playerid,gHintFreezArea[hintid]))
  910.                 {
  911.                     ShowPlayerDialog(playerid,dFreez,2,"Холодильник","Хот-дог ({"#cRED"}-10 прод. {"#cGREEN"}+20 сытость{"#cWHITE"})\nБургер ({"#cRED"}-15 прод. {"#cGREEN"}+30 сытость{"#cWHITE"})\nПицца ({"#cRED"}-30 прод. {"#cGREEN"}+60 сытость{"#cWHITE"})","Съесть","Отмена");
  912.                 }
  913.                 if(gHouses[houseid][houseImprove][3] && IsPlayerInDynamicArea(playerid,gHintStoreArea[hintid]))
  914.                 {
  915.                     ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
  916.                 }
  917.             }
  918.             else SendClientMessage(playerid, -1, "{"#cGRAY"}Только владелец дома может использовать шкаф");
  919.         }
  920.     }
  921.     return 1;
  922. }
  923.  
  924.  
  925.  
  926. public OnPlayerUpdate(playerid)
  927. {
  928.         if(pTemp[playerid][pSelectStoreGun])
  929.     {
  930.         new newkeys,ud,lr;
  931.         GetPlayerKeys(playerid,newkeys,ud,lr);
  932.         if (lr > 0)
  933.         {
  934.             new id = pTemp[playerid][pStoreGun];
  935.             if(id == 8) id = 0;
  936.             else id++;
  937.             new houseid = pData[playerid][pHouse]-1;
  938.             new hintid = gHouses[houseid][houseHint];
  939.             for(new i=id;i<9;i++)
  940.             {
  941.                 if(gHouses[houseid][houseGun][i])
  942.                 {
  943.                     new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
  944.                     GetPlayerCameraPos(playerid,x,y,z);
  945.                     GetGunCameraOffset(gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintStore[hintid][5],x2,y2);
  946.                     z2 = gHintGun[hintid][i][2] + 0.4;
  947.                     InterpolateCameraPos(playerid,x,y,z,x2,y2,z2,700,CAMERA_MOVE);
  948.                     GetPlayerCameraFrontVector(playerid,x2,y2,z2);
  949.                     x += x2;
  950.                     y += y2;
  951.                     z += z2;
  952.                     InterpolateCameraLookAt(playerid,x,y,z,gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],700,CAMERA_MOVE);
  953.                     pTemp[playerid][pStoreGun] = i;
  954.                     pTemp[playerid][pSelectStoreGun] = false;
  955.                     SetTimerEx("SelectStoreGun",1000,false,"i",playerid);
  956.                     new gunname[32],mes[48];
  957.                     GetWeaponName(GetStoreGunID(i),gunname,32);
  958.                     format(mes,48,"~w~%s (~g~%d~w~)",gunname,gHouses[houseid][houseGun][i]);
  959.                     GameTextForPlayer(playerid,mes,100000,3);
  960.                     break;
  961.                 }
  962.                 if(i == 8) i = 0;
  963.             }
  964.         }
  965.         if (lr < 0)
  966.         {
  967.             new id = pTemp[playerid][pStoreGun];
  968.             if(id == 0) id = 8;
  969.             else id--;
  970.             new houseid = pData[playerid][pHouse]-1;
  971.             new hintid = gHouses[houseid][houseHint];
  972.             for(new i=id;i>=0;i--)
  973.             {
  974.                 if(gHouses[houseid][houseGun][i])
  975.                 {
  976.                     new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
  977.                     GetPlayerCameraPos(playerid,x,y,z);
  978.                     GetGunCameraOffset(gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintStore[hintid][5],x2,y2);
  979.                     z2 = gHintGun[hintid][i][2] + 0.4;
  980.                     InterpolateCameraPos(playerid,x,y,z,x2,y2,z2,700,CAMERA_MOVE);
  981.                     GetPlayerCameraFrontVector(playerid,x2,y2,z2);
  982.                     x += x2;
  983.                     y += y2;
  984.                     z += z2;
  985.                     InterpolateCameraLookAt(playerid,x,y,z,gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],700,CAMERA_MOVE);
  986.                     pTemp[playerid][pStoreGun] = i;
  987.                     pTemp[playerid][pSelectStoreGun] = false;
  988.                     SetTimerEx("SelectStoreGun",1000,false,"i",playerid);
  989.                     new gunname[32],mes[48];
  990.                     GetWeaponName(GetStoreGunID(i),gunname,32);
  991.                     format(mes,48,"~w~%s (~g~%d~w~)",gunname,gHouses[houseid][houseGun][i]);
  992.                     GameTextForPlayer(playerid,mes,100000,3);
  993.                     break;
  994.                 }
  995.                 if(i == 0) i = 8;
  996.             }
  997.         }
  998.     }
  999.     return 1;
  1000. }
  1001.  
  1002.  
  1003. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  1004. {
  1005.     switch(dialogid)
  1006.     {
  1007.         case dCreatehouse1:
  1008.         {
  1009.             if(!response) return 1;
  1010.             gCreatehouse[playerid][chouseHint] = listitem;
  1011.             ShowPlayerDialog(playerid,dCreatehouse2,1,"Создание жилища","Укажите цену за квартиру/дом (от 1 тыс. до 15 млн.)","Далее","Выход");
  1012.         }
  1013.         case dCreatehouse2:
  1014.         {
  1015.             if(!response) return 1;
  1016.             new price = strval(inputtext);
  1017.             if(!isNumeric(inputtext) || price < 1000 || price > 15000000)
  1018.             {
  1019.                 SendClientMessage(playerid,CRED,"Неверная цена");
  1020.                 ShowPlayerDialog(playerid,dCreatehouse2,1,"Создание жилища","Укажите цену за квартиру/дом (от 1 тыс. до 10 млн.)","Далее","Выход");
  1021.                 return 1;
  1022.             }
  1023.             gCreatehouse[playerid][chousePrice] = price;
  1024.             ShowPlayerDialog(playerid,dCreatehouse3,2,"Создание жилища","Эконом класс\nСредний класс\nЭлитный класс\nОсобняк","Создать","Выход");
  1025.         }
  1026.         case dCreatehouse3:
  1027.         {
  1028.             if(!response) return 1;
  1029.             new clas=listitem;
  1030.             new Float:x, Float:y, Float:z, Float:r;
  1031.             GetPlayerPos(playerid,x,y,z);
  1032.             GetPlayerFacingAngle(playerid,r);
  1033.             new query[512];
  1034.             format(query,sizeof(query),"INSERT INTO `houses` VALUES('','%d','3','%d','%d','0|0|0|0|0','0|0|0|0|0|0|0|0|0','0|0|0|0','0','0','0','0','0','%f','%f','%f','%f','','','','','','','','','','','','')",clas,gCreatehouse[playerid][chousePrice],gCreatehouse[playerid][chouseHint],x,y,z,r);
  1035.             new Result:d = sql_query(zConn, query, QUERY_CACHED);
  1036.             new houseid = sql_insert_id(d);
  1037.             sql_free_result(d);
  1038.             new i = houseid - 1;
  1039.             SPFD(playerid,dMes,0,"Результат","ОК","","Создан дом. ID: {"#cGREEN"} %d",houseid);
  1040.             gHouses[i][houseID] = houseid;
  1041.             gHouses[i][houseClass] = clas;
  1042.             gHouses[i][housePrice] = gCreatehouse[playerid][chousePrice];
  1043.             gHouses[i][houseHint] = gCreatehouse[playerid][chouseHint];
  1044.             gHouses[i][houseX] = x;
  1045.             gHouses[i][houseY] = y;
  1046.             gHouses[i][houseZ] = z;
  1047.             gHouses[i][houseR] = r;
  1048.             gHouseArea[i] = CreateDynamicSphere(gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ],2.0,0,0,-1);
  1049.             gHousePickup[i] = CreateDynamicPickup(1273,1,gHouses[i][houseX],gHouses[i][houseY],gHouses[i][houseZ]);
  1050.         }
  1051.         case dHouseInfo:
  1052.         {
  1053.             if(!response) return 1;
  1054.             new houseid = pTemp[playerid][pSelectedHouseID];
  1055.             if(!gHouses[houseid][houseOwnerID])
  1056.             {
  1057.                 if(pData[playerid][pHouse]) return SendClientMessage(playerid,CGRAY,"У Вас уже есть дом");
  1058.                 SPFD(playerid,dHouseBuy,0,"Частный дом","Да","Нет","{"#cWHITE"}Вы действительно хотите купить этот дом за {"#cGREEN"}$%d?",gHouses[houseid][housePrice]);
  1059.             }
  1060.             else
  1061.             {
  1062.                 if(gHouses[houseid][houseClose]) return GameTextForPlayer(playerid,"~r~closed",2000,1);
  1063.                 SetPlayerInterior(playerid,gHints[gHouses[houseid][houseHint]][hintInterior]);
  1064.                 SetPlayerPos(playerid,gHints[gHouses[houseid][houseHint]][hintX],gHints[gHouses[houseid][houseHint]][hintY],gHints[gHouses[houseid][houseHint]][hintZ]);
  1065.                 SetPlayerFacingAngle(playerid,gHints[gHouses[houseid][houseHint]][hintR]);
  1066.                 SetPlayerVirtualWorld(playerid,houseid+1);
  1067.                 pTemp[playerid][pIsInHouse] = true;
  1068.             }
  1069.         }
  1070.         case dHouseBuy:
  1071.         {
  1072.             if(!response) return 1;
  1073.             new houseid = pTemp[playerid][pSelectedHouseID];
  1074.             if(!gHouses[houseid][houseOwnerID])
  1075.             {
  1076.                 new price = gHouses[houseid][housePrice];
  1077.                 if(GetPlayerMoneyEx(playerid) < price) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно денег на руках");
  1078.                 new query[256];
  1079.                 format(query,sizeof(query),"UPDATE `houses` SET `ownerid` = '%d', `owner` = '%s' WHERE `id` = '%d'",pData[playerid][pMysqlID],pData[playerid][pNickname],gHouses[houseid][houseID]);
  1080.                 sql_query(zConn, query);
  1081.                 UpdatePlayerData(playerid,"house",gHouses[houseid][houseID]);
  1082.                 gHouses[houseid][houseOwnerID] = pData[playerid][pMysqlID];
  1083.                 format(gHouses[houseid][houseOwner],MAX_PLAYER_NAME,"%s",pData[playerid][pNickname]);
  1084.                 pData[playerid][pHouse] = gHouses[houseid][houseID];
  1085.                 SendClientMessage(playerid,0xFFFFFFFF,"Поздравляем! Вы купили дом");
  1086.                 SendClientMessage(playerid,0x66CC00FF,"Напишите {3399FF}/home {66CC00}чтобы узнать о возможностях");
  1087.                 format(query,sizeof(query),"UPDATE `houses` SET `days` = '3' WHERE id = '%d'",pData[playerid][pHouse]);
  1088.                 sql_query(zConn, query);
  1089.                 PlayerPlaySound(playerid,1185,0.0,0.0,0.0);
  1090.                 SetTimerEx("PlayerPlaySoundDelay",6900,false,"ii",playerid,1186);
  1091.                 TransferMoney(playerid,-1,price,"buyhouse");
  1092.                 new str[40];
  1093.                 format(str, sizeof(str), "~r~ -%d$",price);
  1094.                 GameTextForPlayer(playerid,str,2000,1);
  1095.                 DestroyDynamicPickup(gHousePickup[houseid]);
  1096.                 gHousePickup[houseid] = CreateDynamicPickup(19522,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
  1097.                 DestroyDynamicMapIcon(gHouseIcon[houseid]);
  1098.                 gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],32,CWHITE);
  1099.  
  1100.             }
  1101.         }
  1102.         case dSellHouse:
  1103.         {
  1104.             if(!response) return 1;
  1105.             new houseid = pData[playerid][pHouse]-1;
  1106.             UpdatePlayerData(playerid,"house",0);
  1107.             new query[512];
  1108.             format(query,sizeof(query),"UPDATE `houses` SET `ownerid` = '0', `owner` = '', `days` = '3', improve = '0|0|0|0|0', gun = '0|0|0|0|0|0|0|0|0', skin = '0|0|0|0',safecode='0', safemoney='0', drugs='0', products='0',inhabit2id = '0',inhabit3id = '0',inhabit4id = '0',inhabit2='',inhabit3='',inhabit4='' WHERE `id` = '%d'",houseid+1);
  1109.             sql_query(zConn, query);
  1110.             pData[playerid][pHouse] = 0;
  1111.             gHouses[houseid][houseOwnerID] = 0;
  1112.             strdel(gHouses[houseid][houseOwner],0,24);
  1113.             strdel(gHouseHabits[houseid][0],0,24);
  1114.             strdel(gHouseHabits[houseid][1],0,24);
  1115.             strdel(gHouseHabits[houseid][2],0,24);
  1116.             gHouses[houseid][houseHabitID][0] = 0;
  1117.             gHouses[houseid][houseHabitID][1] = 0;
  1118.             gHouses[houseid][houseHabitID][2] = 0;
  1119.             for(new i;i<9;i++)
  1120.             {
  1121.                 if(i < 5)
  1122.                 {
  1123.                     gHouses[houseid][houseImprove][i] = 0;
  1124.                     if(i < 4) gHouses[houseid][houseSkin][i] = 0;
  1125.                 }
  1126.                 gHouses[houseid][houseGun][i] = 0;
  1127.             }
  1128.             gHouses[houseid][houseSafeCode] = 0;
  1129.             gHouses[houseid][houseSafeMoney] = 0;
  1130.             gHouses[houseid][houseDrugs] = 0;
  1131.             gHouses[houseid][houseProducts] = 0;
  1132.             TransferMoney(-1,playerid,gHouses[houseid][housePrice]/100*80,"gossellhouse");
  1133.             new str[40];
  1134.             format(str, sizeof(str), "~g~ +%d$",gHouses[houseid][housePrice]/100*80);
  1135.             GameTextForPlayer(playerid,str,2000,1);
  1136.             DestroyDynamicPickup(gHousePickup[houseid]);
  1137.             gHousePickup[houseid] = CreateDynamicPickup(1273,1,gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ]);
  1138.             DestroyDynamicMapIcon(gHouseIcon[houseid]);
  1139.             gHouseIcon[houseid] = CreateDynamicMapIcon(gHouses[houseid][houseX],gHouses[houseid][houseY],gHouses[houseid][houseZ],31,CWHITE);
  1140.             SendClientMessage(playerid,CGREEN,"Дом продан");
  1141.         }
  1142.         case dHouseMenu:
  1143.         {
  1144.             if(!response) return 1;
  1145.             new houseid = pData[playerid][pHouse] - 1;
  1146.             switch(listitem)
  1147.             {
  1148.                 case 0://Открыть - закрыть
  1149.                 {
  1150.                     if(!gHouses[houseid][houseClose])
  1151.                     {
  1152.                         gHouses[houseid][houseClose] = 1;
  1153.                         PlayerPlaySound(playerid, 36401, 0.0, 0.0, 0.0);
  1154.                         GameTextForPlayer(playerid,"~r~CLOSE",2000,3);
  1155.                     }
  1156.                     else
  1157.                     {
  1158.                         gHouses[houseid][houseClose] = 0;
  1159.                         PlayerPlaySound(playerid, 36401, 0.0, 0.0, 0.0);
  1160.                         GameTextForPlayer(playerid,"~g~OPEN",2000,3);
  1161.                     }
  1162.                     new query[256];
  1163.                     format(query,sizeof(query),"UPDATE `houses` SET `close` = '%d' WHERE `id` = '%d'",gHouses[houseid][houseClose],houseid);
  1164.                     sql_query(zConn, query);
  1165.                 }
  1166.                 case 1: //Улучшения
  1167.                 {
  1168.                     new mes[256];
  1169.                     for(new i;i<5;i++)
  1170.                     {
  1171.                         new c[7];
  1172.                         if(gHouses[houseid][houseImprove][i]) c = ""#cGREEN"";
  1173.                         else if(!i || gHouses[houseid][houseImprove][i-1]) c = ""#cWHITE"";
  1174.                         else c = ""#cGRAY"";
  1175.                         if(!i) format(mes,sizeof(mes),"{%s}%d. %s",c,i+1,gHouseImproveName[i]);
  1176.                         else format(mes,sizeof(mes),"%s\n{%s}%d. %s",mes,c,i+1,gHouseImproveName[i]);
  1177.                     }
  1178.                     ShowPlayerDialog(playerid,dHouseImprove,2,"Управление домом",mes,"Купить","Отмена");
  1179.                 }
  1180.                 case 2:
  1181.                 {
  1182.                     if(!pData[playerid][pCar] || (!pData[playerid][pHouse])) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас нет т/с");
  1183.                     new carID = GetCarSlot(pData[playerid][pCar]); new vehicleid = gCars[carID][carVid]; new modelid = GetVehicleModel(vehicleid) - 400;
  1184.                     new Float:factor;
  1185.                     if(pData[playerid][pHouse]) factor = 0.5;
  1186.                     else factor = 0.8;
  1187.                     new price = floatround(gTransport[modelid][trPrice]*factor);
  1188.                     SetPVarInt(playerid,"psellcarPrice",price);
  1189.                     SetPVarInt(playerid,"psellcarID",carID);
  1190.                     new mes[228];
  1191.                     format(mes,sizeof(mes),"\t\t\t{"#cWHITE"}Вы хотите продать свой автомобиль за {"#cGREEN"}$%d?\n\n\t\t\t\t\t{FFFF00}• [Подсказка] •\n{"#cWHITE"}Чтобы продать автомобиль другому игроку используйте команду /sellmycar [id] [цена]",price);
  1192.                     ShowPlayerDialog(playerid,dSellCar,0,"Продажа автомобиля",mes,"Продать","Отмена");
  1193.                 }
  1194.                 case 3:
  1195.                 {
  1196.                     if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У вас нет личного т/с");
  1197.                     if(pData[playerid][pMoney] < 500) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Недостаточно денег. Требуется {"#cGREEN"}500$");
  1198.                     new carid = GetCarSlot(pData[playerid][pCar]);
  1199.                     if(carid == -1) return SendClientMessage(playerid,CGRAY,"Ошибка #115");
  1200.                     new vid = gCars[carid][carVid];
  1201.                     if(vid == INVALID_VEHICLE_ID) return SendClientMessage(playerid,CGRAY,"Ошибка #116");
  1202.                     SetVehicleToRespawnEx(vid);
  1203.                     SendClientMessage(playerid,0x3399FFFF,"Транспорт был доставлен к Вашему дому");
  1204.                     gVehicles[vid-1][vLock] = 1;
  1205.                     for(new i5;i5<14;i5++)
  1206.                     {
  1207.                         new tun = gCars[carid][carTuning][i5];
  1208.                         if(tun != 0) AddVehicleComponent(vid, tun);
  1209.                     }
  1210.                     if(!gCars[carid][carPaintJob]) ChangeVehiclePaintjob(vid, gCars[carid][carPaintJob]);
  1211.                     SetVehicleNumberPlate(vid, pData[playerid][pCarNumber]);
  1212.                     TransferMoney(playerid,-1,500,"fixcar");
  1213.                     GameTextForPlayer(playerid, "~r~-500$", 3000, 1);
  1214.                 }
  1215.                 case 4: //Отметить тс на гпс
  1216.                 {
  1217.                     if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У вас нет личного т/с");
  1218.                     if(pTemp[playerid][pGPS])
  1219.                     {
  1220.                         DisablePlayerCheckpoint(playerid);
  1221.                         pTemp[playerid][pGPS] = false;
  1222.                         SendClientMessage(playerid,CRED,"Метка {"#cWHITE"}снята с радара");
  1223.                     }
  1224.                     new carid = GetCarSlot(pData[playerid][pCar]);
  1225.                     if(carid == -1) return SendClientMessage(playerid,CGRAY,"Ошибка #115");
  1226.                     new vid = gCars[carid][carVid];
  1227.                     if(vid == INVALID_VEHICLE_ID) return SendClientMessage(playerid,CGRAY,"Ошибка #116");
  1228.                     SetPlayerCheckpoint(playerid,gVehicles[vid-1][vX],gVehicles[vid-1][vY],gVehicles[vid-1][vZ],5.0);
  1229.                     pTemp[playerid][pGPS] = true;
  1230.                     PlayerPlaySound(playerid, 4601, 0.0, 0.0, 0.0);
  1231.                     TextDrawShowForPlayer(playerid, GPSON[playerid]);
  1232.                     SendClientMessage(playerid,CRED,"Метка {"#cWHITE"}установлена у Вас на радаре. Чтобы снять метку напишите {"#cINFO"}/gps");
  1233.                 }
  1234.                 case 5:
  1235.                 {
  1236.                     if(pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У Вас есть машина. Вы должны продать её прежде чем продавать дом");
  1237.                     new price = gHouses[houseid][housePrice]/100*80;
  1238.                     new mes[264];
  1239.                     format(mes,sizeof(mes),"\t\t\t{"#cWHITE"}Вы хотите продать дом государству за {"#cGREEN"}%d$?\n\n\t\t\t\t\t{FFFF00}• [Подсказка] •\n{"#cWHITE"}Чтобы продать дом другому игроку используйте команду /sellmyhouse [id] [цена]",price);
  1240.                     ShowPlayerDialog(playerid,dSellHouse,0,"Продажа дома",mes,"Продать","Отмена");
  1241.                 }
  1242.                 case 6:
  1243.                 {
  1244.                     if(!pData[playerid][pCar]) return SendClientMessage(playerid,CGRAY,"У вас нет личного т/с");
  1245.                     if(pData[playerid][pMoney] < 15000) return SendClientMessage(playerid,CRED,"x [Ошибка] {ffffff}У вас не достаточно денег!");
  1246.                     ShowPlayerDialog(playerid, dDellTuning, DIALOG_STYLE_MSGBOX, "{"#cGREEN"}Удаление тюнинга", "\n\n\n{FFFFFF}Вы действительно хотите удалить все компоненты\nтюнинга с Вашего транспорта?\n\n\n", "Да", "Отмена");
  1247.                 }
  1248.             }
  1249.         }
  1250.         case dHouseStat:
  1251.         {
  1252.             ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{"#cGREEN"} 500$\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n{FF0000}7. Удалить тюннинг с автомобиля {"#cGREEN"}15.000$","ОК","Отмена");
  1253.         }
  1254.         case dHouseImprove:
  1255.         {
  1256.             if(!response) return ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
  1257.             new houseid = pData[playerid][pHouse] - 1;
  1258.             if(gHouses[houseid][houseImprove][listitem])
  1259.             {
  1260.                 SendClientMessage(playerid,CGREEN,"У Вас уже установлено это улучшение");
  1261.                 ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
  1262.             }
  1263.             else if((!listitem && !gHouses[houseid][houseImprove][listitem]) || (gHouses[houseid][houseImprove][listitem-1] && !gHouses[houseid][houseImprove][listitem]))
  1264.             {
  1265.                 new mes[128];
  1266.                 format(mes, sizeof(mes),"{"#cWHITE"}Вы хотите купить улучшение: {"#cINFO"}\"%s\"?\n{"#cWHITE"}Оно обойдется Вам в {"#cRED"}$%d",gHouseImproveName[listitem],gHouseImprovePrice[listitem]);
  1267.                 ShowPlayerDialog(playerid,dHouseImprove2,0,"Управление домом",mes,"Да","Нет");
  1268.                 SetPVarInt(playerid,"improveid",listitem);
  1269.             }
  1270.             else
  1271.             {
  1272.                 SendClientMessage(playerid,CGRAY,"Это улучшение еще не доступно Вам");
  1273.                 ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
  1274.             }
  1275.         }
  1276.         case dHouseImprove2:
  1277.         {
  1278.             new improveid = GetPVarInt(playerid,"improveid");
  1279.             DeletePVar(playerid,"improveid");
  1280.             if(!response) return ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
  1281.             new price = gHouseImprovePrice[improveid];
  1282.             if(GetPlayerMoneyEx(playerid) < price)
  1283.             {
  1284.                 ShowPlayerDialog(playerid,dHouseMenu,2,"Управление домом",""D"1. "W"Открыть / закрыть дом\n"D"2. "W"Улучшения\n"D"3. "W"Продать домашний транспорт\n"D"4. "W"Доставить транспорт к дому{43FF0A} (500$)\n"D"5. "W"Отметить транспорт на GPS\n"D"6. "W"Продать дом\n"D"7. {FF0000}Удалить тюннинг с автомобиля","ОК","Отмена");
  1285.                 return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно денег");
  1286.             }
  1287.             new houseid = pData[playerid][pHouse] - 1;
  1288.             gHouses[houseid][houseImprove][improveid] = 1;
  1289.             new hintid = gHouses[houseid][houseHint];
  1290.             switch(improveid)
  1291.             {
  1292.                 case 1: CreateDynamicObject(2332,gHintSafe[hintid][0],gHintSafe[hintid][1],gHintSafe[hintid][2],gHintSafe[hintid][3],gHintSafe[hintid][4],gHintSafe[hintid][5],houseid+1); //Сейф
  1293.                 case 2: CreateDynamicObject(2141,gHintFreez[hintid][0],gHintFreez[hintid][1],gHintFreez[hintid][2],gHintFreez[hintid][3],gHintFreez[hintid][4],gHintFreez[hintid][5],houseid+1);
  1294.                 case 3:
  1295.                 {
  1296.                     CreateDynamicObject(2708,gHintStore[hintid][0],gHintStore[hintid][1],gHintStore[hintid][2],gHintStore[hintid][3],gHintStore[hintid][4],gHintStore[hintid][5],houseid+1);
  1297.                     gHouses[houseid][houseSkin][0] = pData[playerid][pSkin];
  1298.                     if(pData[playerid][pFraction]) gHouses[houseid][houseSkin][3] = pData[playerid][pFractionSkin];
  1299.                     UpdateHouseDress(houseid);
  1300.                 }
  1301.             }
  1302.  
  1303.             new data[32],query[128];
  1304.             for(new i;i<5;i++)
  1305.             {
  1306.                 if(!i) format(data,sizeof(data),"%d",gHouses[houseid][houseImprove][i]);
  1307.                 else format(data,sizeof(data),"%s|%d",data,gHouses[houseid][houseImprove][i]);
  1308.             }
  1309.             format(query,sizeof(query),"UPDATE `houses` SET `improve` = '%s' WHERE id = '%d'",data,houseid+1);
  1310.             sql_query(zConn, query);
  1311.             TransferMoney(playerid,-1,price,"houseimprove");
  1312.             new str[40];
  1313.             format(str, sizeof(str), "~r~ -%d$",price);
  1314.             GameTextForPlayer(playerid,str,2000,1);
  1315.             SendClientMessage(playerid,0x3881FFFF,"Поздравляем, Вы купили улучшение для дома.");
  1316.             if(improveid == 1) SendClientMessage(playerid,CINFO,"Код сейфа по умолчанию: \"{"#cGRAY"}0000{"#cINFO"}\"");
  1317.         }
  1318.         case dStore:
  1319.         {
  1320.             if(!response) return 1;
  1321.             switch(listitem)
  1322.             {
  1323.                 case 0: //Берем оружие
  1324.                 {
  1325.                     new houseid = pData[playerid][pHouse]-1;
  1326.                     new hintid = gHouses[houseid][houseHint];
  1327.                     for(new i;i<9;i++)
  1328.                     {
  1329.                         if(gHouses[houseid][houseGun][i])
  1330.                         {
  1331.                             new Float:x, Float:y, Float:z, Float:x2, Float:y2, Float:z2;
  1332.                             GetPlayerCameraPos(playerid,x,y,z);
  1333.                             SetPVarFloat(playerid,"oldcx",x);
  1334.                             SetPVarFloat(playerid,"oldcy",y);
  1335.                             SetPVarFloat(playerid,"oldcz",z);
  1336.                             GetGunCameraOffset(gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintStore[hintid][5],x2,y2);
  1337.                             z2 = gHintGun[hintid][i][2] + 0.4;
  1338.                             InterpolateCameraPos(playerid,x,y,z,x2,y2,z2,1000,CAMERA_MOVE);
  1339.                             GetPlayerCameraFrontVector(playerid,x2,y2,z2);
  1340.                             x += x2;
  1341.                             y += y2;
  1342.                             z += z2;
  1343.                             InterpolateCameraLookAt(playerid,x,y,z,gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],1000,CAMERA_MOVE);
  1344.                             pTemp[playerid][pSelectStoreGun] = true;
  1345.                             pTemp[playerid][pStoreGun] = i;
  1346.                             pTemp[playerid][pSelectStoreGun] = false;
  1347.                             SetTimerEx("SelectStoreGun",1000,false,"i",playerid);
  1348.                             SendClientMessage(playerid,CWHITE,"Используйте клавиши {"#cGREEN"}влево{"#cWHITE"} и {"#cGREEN"}вправо{"#cWHITE"} для выбора оружия");
  1349.                             SendClientMessage(playerid,CWHITE,"Используйте клавишу {"#cGREEN"}входа / Выхода из транспорта{"#cWHITE"} для Выхода");
  1350.                             SendClientMessage(playerid,CWHITE,"Используйте клавишу {"#cGREEN"}быстрого бега{"#cWHITE"} для подтверждения");
  1351.                             new gunname[32],mes[48];
  1352.                             GetWeaponName(GetStoreGunID(i),gunname,32);
  1353.                             format(mes,48,"~w~%s (~g~%d~w~)",gunname,gHouses[houseid][houseGun][i]);
  1354.                             GameTextForPlayer(playerid,mes,100000,3);
  1355.                             TogglePlayerControllable(playerid,0);
  1356.                             return 1;
  1357.                         }
  1358.                     }
  1359.                     return SendClientMessage(playerid,CGRAY,"У Вас нет оружия в шкафу");
  1360.                 }
  1361.                 case 1: //Ложим оружие
  1362.                 {
  1363.                     ShowGunList(playerid);
  1364.                 }
  1365.                 case 2: //Одежду
  1366.                 {
  1367.                     if(pData[playerid][pFraction]) return SendClientMessage(playerid,CWHITE,"Вы состоите в организации, менять внешний вид {ff0000}запрещено");
  1368.                     new houseid = pData[playerid][pHouse] - 1;
  1369.                     new mes[128],cnt;
  1370.                     for(new i;i<4;i++)
  1371.                     {
  1372.                         if(i == 3 && pData[playerid][pFractionSkin]) format(mes,sizeof(mes),"%sФракционная одежда",mes);
  1373.                         else if(gHouses[houseid][houseSkin][i])
  1374.                         {
  1375.                             format(mes,sizeof(mes),"%sОдежда %d\n",mes,i+1);
  1376.                         }
  1377.                         else continue;
  1378.                         cnt++;
  1379.                     }
  1380.                     if(!cnt)
  1381.                     {
  1382.                         SendClientMessage(playerid,CGRAY,"Нет одежды в шкафу");
  1383.                         return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
  1384.                     }
  1385.                     ShowPlayerDialog(playerid,dStoreSkin,2,"Шкаф",mes,"Одеть","Отмена");
  1386.                 }
  1387.                 case 3:
  1388.                 {
  1389.                     if(pData[playerid][pFraction]) return SendClientMessage(playerid,CWHITE,"Вы состоите в организации, менять внешний вид {ff0000}запрещено");
  1390.                     new houseid = pData[playerid][pHouse] - 1;
  1391.                     new mes[128],cnt;
  1392.                     for(new i;i<4;i++)
  1393.                     {
  1394.                         if(gHouses[houseid][houseSkin][i]) format(mes,sizeof(mes),"%sОдежда %d\n",mes,i+1);
  1395.                         else continue;
  1396.                         cnt++;
  1397.                     }
  1398.                     if(!cnt)
  1399.                     {
  1400.                         SendClientMessage(playerid,CGRAY,"Нет одежды в шкафу");
  1401.                         return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
  1402.                     }
  1403.                     ShowPlayerDialog(playerid,dDelSkin,2,"Шкаф",mes,"Выкинуть","Отмена");
  1404.                 }
  1405.             }
  1406.         }
  1407.         case dDelSkin:
  1408.         {
  1409.             if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
  1410.             new houseid = pData[playerid][pHouse] - 1;
  1411.             gHouses[houseid][houseSkin][listitem+1] = 0;
  1412.             SendSucc(playerid, "Вы успешно выкинули одну одежду из шкафа");
  1413.             UpdateHouseDress(houseid);
  1414.             return 1;
  1415.         }
  1416.         case dStoreSkin:
  1417.         {
  1418.             if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
  1419.             new skin,id;
  1420.             new houseid = pData[playerid][pHouse] - 1;
  1421.             if(!strcmp(inputtext,"Фракционная одежда",false))
  1422.             {
  1423.                 skin = pData[playerid][pFractionSkin];
  1424.                 SetPlayerColor(playerid,gFractionColor[pData[playerid][pFraction] - 1]);
  1425.                 SetPVarInt(playerid,"odetcol",0);
  1426.             }
  1427.             else
  1428.             {
  1429.                 SetPlayerColor(playerid,0xffffff11);
  1430.                 sscanf(inputtext,"{s[100]}i",id);
  1431.                 skin = gHouses[houseid][houseSkin][id-1];
  1432.                 SetPVarInt(playerid,"odetcol",1);
  1433.                 pData[playerid][pSkin] = skin;
  1434.                 UpdatePlayerData(playerid, "skin", skin);
  1435.             }
  1436.             SetPlayerSkin(playerid,skin);
  1437.             MeAction(playerid,"переоделся(ась)");
  1438.             new mes[128],cnt;
  1439.             for(new i;i<4;i++)
  1440.             {
  1441.                 if(i == 3 && pData[playerid][pFractionSkin]) format(mes,sizeof(mes),"%sФракционная одежда",mes);
  1442.                 else if(gHouses[houseid][houseSkin][i])
  1443.                 {
  1444.                     format(mes,sizeof(mes),"%sОдежда %d\n",mes,i+1);
  1445.                 }
  1446.                 else continue;
  1447.                 cnt ++;
  1448.             }
  1449.             if(!cnt)
  1450.             {
  1451.                 SendClientMessage(playerid,CGRAY,"Нет одежды в шкафу");
  1452.                 return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
  1453.             }
  1454.             ShowPlayerDialog(playerid,dStoreSkin,2,"Шкаф",mes,"Одеть","Отмена");
  1455.         }
  1456.         case dStorePut:
  1457.         {
  1458.             if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду\n"D"4. "W"Выкинуть одежду","Далее","Отмена");
  1459.             new cnt;
  1460.             new houseid = pData[playerid][pHouse]-1;
  1461.             for(new i;i<=11;i++)
  1462.             {
  1463.                 new gunid,ammo,storeslot;
  1464.                 GetPlayerWeaponData(playerid,i,gunid,ammo);
  1465.                 storeslot = GetStoreGunSlot(gunid);
  1466.                 if(!gunid || storeslot == -1 || ammo <= 0) continue;
  1467.                 if(gunid == 23 && pTemp[playerid][pTazerGun]) continue;
  1468.                 if(listitem == cnt)
  1469.                 {
  1470.                     new cnt2;
  1471.                     for(new i2;i2<9;i2++) if(gHouses[houseid][houseGun][i2] && storeslot != i2) cnt2++;
  1472.                     if(cnt2 >= 3)
  1473.                     {
  1474.                         SendClientMessage(playerid,CGRAY,"Вы не можете хранить больше 3-х видов оружия в шкафу");
  1475.                         return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
  1476.                     }
  1477.                     if(gHouses[houseid][houseGun][storeslot] + ammo > 10000) return SendClientMessage(playerid,CWHITE,"У Вас в шкафу максимальное к-во патронов данного оружия");
  1478.                     gHouses[houseid][houseGun][storeslot] += ammo;
  1479.                     SaveStoreGun(houseid);
  1480.                     UpdateHouseGun(houseid);
  1481.                     SetPlayerAmmoEx(playerid,gunid,0);
  1482.                     MeAction(playerid,"положил(а) оружие в шкаф");
  1483.                     SendClientMessage(playerid,CGREEN,"Вы положили оружие в шкаф");
  1484.                     SetTimerEx("ShowGunList",500,false,"i",playerid);
  1485.                     //ShowGunList(playerid);
  1486.                     break;
  1487.                 }
  1488.                 cnt++;
  1489.             }
  1490.         }
  1491.         case dStoreGet:
  1492.         {
  1493.             if(!response) return ShowPlayerDialog(playerid,dStore,2,"Шкаф",""D"1. "W"Взять оружие\n"D"2. "W"Положить оружие\n"D"3. "W"Выбрать одежду","Далее","Отмена");
  1494.             new ammo = strval(inputtext);
  1495.             new storeslot = pTemp[playerid][pStoreGun];
  1496.             new houseid = pData[playerid][pHouse] - 1;
  1497.             if(ammo < 1)
  1498.             {
  1499.                 new gunname[32],mes[128];
  1500.                 GetWeaponName(gHintGunID[storeslot],gunname,32);
  1501.                 format(mes,sizeof(mes),"{"#cWHITE"}Укажите сколько патронов{"#cGREEN"}%s{"#cWHITE"} Вы хотите взять:");
  1502.                 ShowPlayerDialog(playerid,dStoreGet,1,"Шкаф",mes,"Взять","Отмена");
  1503.                 return SendClientMessage(playerid,CGRAY,"Нельзя брать меньше 1 патрона");
  1504.             }
  1505.             if(ammo > gHouses[houseid][houseGun][storeslot])
  1506.             {
  1507.                 new gunname[32],mes[128];
  1508.                 GetWeaponName(gHintGunID[storeslot],gunname,32);
  1509.                 format(mes,sizeof(mes),"{"#cWHITE"}Укажите сколько патронов{"#cGREEN"}%s{"#cWHITE"} Вы хотите взять:");
  1510.                 ShowPlayerDialog(playerid,dStoreGet,1,"Шкаф",mes,"Взять","Отмена");
  1511.                 return SendClientMessage(playerid,CGRAY,"Недостаточно патронов в шкафу");
  1512.             }
  1513.             gHouses[houseid][houseGun][storeslot] -= ammo;
  1514.             SaveStoreGun(houseid);
  1515.             UpdateHouseGun(houseid);
  1516.             GivePlayerWeaponEx(playerid,GetStoreGunID(storeslot),ammo);
  1517.             GameTextForPlayer(playerid," ",100,3);
  1518.             MeAction(playerid,"взял(а) оружие и патроны из шкафа");
  1519.             new active=-1;
  1520.             for(new i;i<9;i++) if(gHouses[houseid][houseGun][i]) active = i;
  1521.             if(active == -1)
  1522.             {
  1523.                 SendClientMessage(playerid,CGRAY,"В шкафу больше нет оружия");
  1524.                 new Float:x, Float:y, Float:z, Float:x1, Float:y1, Float:z1;
  1525.                 x = GetPVarFloat(playerid,"oldcx");
  1526.                 y = GetPVarFloat(playerid,"oldcy");
  1527.                 z = GetPVarFloat(playerid,"oldcz");
  1528.                 GetPlayerCameraPos(playerid,x1,y1,z1);
  1529.                 InterpolateCameraPos(playerid,x1,y1,z1,x,y,z,700,CAMERA_MOVE);
  1530.                 SetTimerEx("SetCameraBehindPlayerDelay",1000,false,"i",playerid);
  1531.                 pTemp[playerid][pSelectStoreGun] = false;
  1532.                 pTemp[playerid][pStoreGun] = 0;
  1533.                 GameTextForPlayer(playerid," ",100,3);
  1534.                 TogglePlayerControllable(playerid,1);
  1535.             }
  1536.         }
  1537.         case dSafeCode:
  1538.         {
  1539.             if(!response) return 1;
  1540.             new code = strval(inputtext);
  1541.             new houseid = pData[playerid][pHouse] - 1;
  1542.             if(!isNumeric(inputtext) || strlen(inputtext) != 4 || code != gHouses[houseid][houseSafeCode]) return SendClientMessage(playerid,CGRAY,"Код введен неверно");
  1543.             new mes[128];
  1544.             format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
  1545.             ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
  1546.         }
  1547.         case dSafe:
  1548.         {
  1549.             if(!response) return 1;
  1550.             else ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1551.         }
  1552.         case dSafeAction:
  1553.         {
  1554.             if(!response)
  1555.             {
  1556.                 new houseid = pData[playerid][pHouse] - 1;
  1557.                 new mes[128];
  1558.                 format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
  1559.                 return ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
  1560.             }
  1561.             switch(listitem)
  1562.             {
  1563.                 case 0: ShowPlayerDialog(playerid,dSafePutMoney,1,"Сейф","{"#cWHITE"}Укажите сумму, которую хотите положить в сейф:","Положить","Отмена");
  1564.                 case 1: ShowPlayerDialog(playerid,dSafeGetMoney,1,"Сейф","{"#cWHITE"}Укажите сумму, которую хотите взять из сейфа:","Взять","Отмена");
  1565.                 case 2: ShowPlayerDialog(playerid,dSafePutDrug,1,"Сейф","{"#cWHITE"}Укажите к-во наркотиков, которое Вы хотите положить в сейф","Положить","Отмена");
  1566.                 case 3: ShowPlayerDialog(playerid,dSafeGetDrug,1,"Сейф","{"#cWHITE"}Укажите к-во наркотиков, которое Вы взять из сейфа","Взять","Отмена");
  1567.                 case 4: ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
  1568.             }
  1569.         }
  1570.         case dSafePutMoney:
  1571.         {
  1572.             if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1573.             new money = strval(inputtext);
  1574.             if(money < 1 || money > 1000000)
  1575.             {
  1576.                 SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Неверная сумма");
  1577.                 return ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1578.             }
  1579.             if(GetPlayerMoneyEx(playerid) < money)
  1580.             {
  1581.                 SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно денег");
  1582.                 return ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1583.             }
  1584.             new houseid = pData[playerid][pHouse] - 1;
  1585.             if(gHouses[houseid][houseSafeMoney] + money > 1000000)
  1586.             {
  1587.                 SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"У Вас недостаточно места в сейфе");
  1588.                 return ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1589.             }
  1590.             new query[128],reason[24];
  1591.             format(reason,24,"safeput(%d)",houseid+1);
  1592.             format(query,sizeof(query),"UPDATE `houses` SET `safemoney` = '%d' WHERE id = '%d'",gHouses[houseid][houseSafeMoney]+money,houseid+1);
  1593.             sql_query(zConn, query);
  1594.             gHouses[houseid][houseSafeMoney] += money;
  1595.             TransferMoney(playerid,-1,money,reason);
  1596.             MeAction(playerid,"положил(а) деньги в сейф");
  1597.             ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1598.         }
  1599.         case dSafeGetMoney:
  1600.         {
  1601.             if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1602.             new money = strval(inputtext);
  1603.             new houseid = pData[playerid][pHouse] - 1;
  1604.             if(money < 1 || money > 1000000) SendClientMessage(playerid,CGRAY,"Сумма должна быть от 1 до 1000000");
  1605.             else if(money > gHouses[houseid][houseSafeMoney]) SendClientMessage(playerid,CGRAY,"У Вас недостаточно денег в сейфе");
  1606.             else
  1607.             {
  1608.                 new query[128];
  1609.                 format(query,sizeof(query),"UPDATE `houses` SET `safemoney` = '%d' WHERE id = '%d'",gHouses[houseid][houseSafeMoney]-money,houseid+1);
  1610.                 sql_query(zConn, query);
  1611.                 gHouses[houseid][houseSafeMoney] -= money;
  1612.                 TransferMoney(-1,playerid,money,"safeget");
  1613.                 MeAction(playerid,"взял(а) деньги из сейфа");
  1614.             }
  1615.             ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1616.         }
  1617.         case dSafePutDrug:
  1618.         {
  1619.             if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1620.             new drug = strval(inputtext);
  1621.             new houseid = pData[playerid][pHouse] - 1;
  1622.             if(drug < 1 || drug > 2000) SendClientMessage(playerid,CGRAY,"Вы не можете положить меньше 1 и больше 2000 г. наркотиков в сейф");
  1623.             else if(pData[playerid][pDrugs] < drug) SendClientMessage(playerid,CGRAY,"У Вас недостаточно наркотиков");
  1624.             else if(gHouses[houseid][houseDrugs] + drug > 2000) SendClientMessage(playerid,CGRAY,"Недостаточно места в сейфе");
  1625.             else
  1626.             {
  1627.                 new query[128];
  1628.                 format(query,sizeof(query),"UPDATE `houses` SET `drugs` = '%d' WHERE id = '%d'",gHouses[houseid][houseDrugs]+drug,houseid+1);
  1629.                 sql_query(zConn, query);
  1630.                 gHouses[houseid][houseDrugs] += drug;
  1631.                 pData[playerid][pDrugs] -= drug;
  1632.                 MeAction(playerid,"положил(а) наркотики в сейф");
  1633.             }
  1634.         }
  1635.         case dSafeGetDrug:
  1636.         {
  1637.             if(!response) ShowPlayerDialog(playerid,dSafeAction,2,"Сейф","Положить деньги\nВзять деньги\nПоложить наркотики\nВзять наркотики\nСменить код","ОК","Отмена");
  1638.             new drug = strval(inputtext);
  1639.             new houseid = pData[playerid][pHouse] - 1;
  1640.             if(drug < 1 || drug > 2000) SendClientMessage(playerid,CGRAY,"Вы не можете взять меньше 1 и больше 2000 г. наркотиков в сейф");
  1641.             else if(gHouses[houseid][houseDrugs] < drug) SendClientMessage(playerid,CGRAY,"У Вас недостаточно наркотиков в сейфе");
  1642.             else
  1643.             {
  1644.                 new query[128];
  1645.                 format(query,sizeof(query),"UPDATE `houses` SET `drugs` = '%d' WHERE id = '%d'",gHouses[houseid][houseDrugs]-drug,houseid+1);
  1646.                 sql_query(zConn, query);
  1647.                 gHouses[houseid][houseDrugs] -= drug;
  1648.                 pData[playerid][pDrugs] += drug;
  1649.                 MeAction(playerid,"взял(а) наркотики из сейфа");
  1650.             }
  1651.         }
  1652.         case dSafeCodeChange:
  1653.         {
  1654.             if(!response)
  1655.             {
  1656.                 new houseid = pData[playerid][pHouse] - 1;
  1657.                 new mes[128];
  1658.                 format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
  1659.                 return ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
  1660.             }
  1661.             if(strlen(inputtext) != 4 || !isNumeric(inputtext))
  1662.             {
  1663.                 SendClientMessage(playerid,CGRAY,"Код должен состоять из 4-х цифр");
  1664.                 return ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
  1665.             }
  1666.             new code = strval(inputtext);
  1667.             SetPVarInt(playerid,"safecode",code);
  1668.             ShowPlayerDialog(playerid,dSafeCodeChange2,1,"Сейф","{"#cWHITE"}Введите новый код еще раз","Изменить","Отмена");
  1669.         }
  1670.         case dSafeCodeChange2:
  1671.         {
  1672.             if(!response)
  1673.             {
  1674.                 new houseid = pData[playerid][pHouse] - 1;
  1675.                 new mes[128];
  1676.                 format(mes,sizeof(mes),"{"#cWHITE"}Наркотики [{"#cGREEN"}%d/10000{"#cWHITE"}]\nДеньги [{"#cGREEN"}%d$/1000000${"#cWHITE"}]",gHouses[houseid][houseDrugs],gHouses[houseid][houseSafeMoney]);
  1677.                 return ShowPlayerDialog(playerid,dSafe,0,"Сейф",mes,"Далее","Отмена");
  1678.             }
  1679.             if(strlen(inputtext) != 4 || !isNumeric(inputtext))
  1680.             {
  1681.                 SendClientMessage(playerid,CGRAY,"Код должен состоять из 4-х цифр");
  1682.                 return ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
  1683.             }
  1684.             new code = strval(inputtext);
  1685.             if(code != GetPVarInt(playerid,"safecode"))
  1686.             {
  1687.                 SendClientMessage(playerid,CGRAY,"Коды не совпадают");
  1688.                 return ShowPlayerDialog(playerid,dSafeCodeChange,1,"Сейф","{"#cWHITE"}Введите новый код от сейфа в формате \"{"#cRED"}XXXX{"#cWHITE"}\"","Изменить","Отмена");
  1689.             }
  1690.             new houseid = pData[playerid][pHouse] - 1;
  1691.             gHouses[houseid][houseSafeCode] = code;
  1692.             new query[128];
  1693.             format(query,sizeof(query),"UPDATE `houses` SET `safecode` = '%d' WHERE id = '%d'",code,houseid+1);
  1694.             sql_query(zConn, query);
  1695.             format(query,sizeof(query),"Ваш новый код сейфа: %s. Не забудьте его!",inputtext);
  1696.             SendClientMessage(playerid,CGREEN,query);
  1697.         }
  1698.         case dBuySkin:
  1699.         {
  1700.             if(!response) return 1;
  1701.             new houseid = pData[playerid][pHouse]-1;
  1702.             if(!pData[playerid][pHouse] || !gHouses[houseid][houseImprove][3] || ((houseid+1) > 0 && pData[playerid][pMysqlID] != gHouses[houseid][houseOwnerID])) ShowPlayerDialog(playerid,dBuySkin2,0,"Покупка одежды","{"#cRED"}Внимание! {"#cWHITE"}У Вас нет шкафа для одежды.\nЕсли Вы купите эту одежду, то она заменит вашу текущую\nВы все равно хотите купить Выбранную одежду?","Да","Нет");
  1703.             else
  1704.             {
  1705.                 new skinid = GetPVarInt(playerid,"clothes_select");
  1706.                 new skin = gSkins[skinid][skinID];
  1707.                 new price = GetSkinPrice(skinid);
  1708.                 new id = pTemp[playerid][pSelectedBusinessID];
  1709.                 new slot=-1;
  1710.                 for(new i;i<3;i++)
  1711.                 {
  1712.                     if(skin == gHouses[houseid][houseSkin][i]) return SendClientMessage(playerid,CGRAY,"У Вас уже есть эта одежда в шкафу");
  1713.                     if(!gHouses[houseid][houseSkin][i]) {slot = i; break;}
  1714.                 }
  1715.                 if(slot == -1) return ShowPlayerDialog(playerid,dBuySkin2,0,"Покупка одежды","{"#cRED"}Внимание! {"#cWHITE"}У Вас недостаточно места в шкафу.\nЕсли Вы купите эту одежду, то она заменит вашу текущую\nВы все равно хотите купить Выбранную одежду?","Да","Нет");
  1716.                 if(GetPlayerMoneyEx(playerid) < price) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Недостаточно денег");
  1717.  
  1718.                 if(gBusiness[id][busiOwnerID])
  1719.                 {
  1720.                     if(gBusiness[id][busiProduct] - floatround((price / 150) * 5) / 10 <= 0) return SendClientMessage(playerid, CGRAY, "Ошибка: В бизнесе недостаточно продуктов.");
  1721.                 }
  1722.                 gBusiness[id][busiBank] += floatround((price / 150) * 12);
  1723.                 gBusiness[id][busiProduct] -= floatround((price / 150) * 5) / 20;
  1724.                 UpdateBusinessText(id);
  1725.                 UpdateBusinessDataEx(id+1,"product",gBusiness[id][busiProduct],"bank",gBusiness[id][busiBank]);
  1726.                 gHouses[houseid][houseSkin][slot] = skin;
  1727.                 UpdateHouseDress(houseid);
  1728.                 TransferMoney(playerid,-1,price,"buyskin");
  1729.                 SendClientMessage(playerid,CGREEN,"Одежда была доставлена в ваш шкаф");
  1730.                 pTemp[playerid][pChangingSkin] = false;
  1731.                 if(GetPVarInt(playerid, "curskin") == pData[playerid][pFractionSkin] || (!(houseid+1) || ((houseid+1) > 0 && gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID])) && pData[playerid][pFraction]) SetPlayerSkin(playerid, GetPVarInt(playerid, "curskin"));
  1732.                 else pData[playerid][pSkin] = skin, SetPlayerSkin(playerid,skin);
  1733.  
  1734.                 HidePlayerClothesTD(playerid);
  1735.                 pTemp[playerid][pJustTP] = true;
  1736.                 SetPlayerPos(playerid, GetPVarFloat(playerid, "posx"), GetPVarFloat(playerid, "posy"), GetPVarFloat(playerid, "posz"));
  1737.                 SetPlayerInterior(playerid, GetPVarInt(playerid, "interior"));
  1738.                 SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "vw"));
  1739.                 SetPlayerFacingAngle(playerid, GetPVarInt(playerid, "posa"));
  1740.                 TogglePlayerControllable(playerid, 1);
  1741.                 SetCameraBehindPlayer(playerid);
  1742.                 DeletePVar(playerid, "posx");
  1743.                 DeletePVar(playerid, "posy");
  1744.                 DeletePVar(playerid, "posz");
  1745.                 DeletePVar(playerid, "posa");
  1746.                 DeletePVar(playerid, "interior");
  1747.                 DeletePVar(playerid, "vw");
  1748.                 DeletePVar(playerid, "clothes_sel");
  1749.                 DeletePVar(playerid, "clothes_class");
  1750.                 pTemp[playerid][pChangingSkin] = false;
  1751.             }
  1752.         }
  1753.         case dBuySkin2:
  1754.         {
  1755.             if(!response) return 1;
  1756.             new skin;
  1757.             new skinid = GetPVarInt(playerid,"clothes_select");
  1758.             new houseid = pData[playerid][pHouse]-1;
  1759.             skin = gSkins[skinid][skinID];
  1760.             new price = GetSkinPrice(skinid);
  1761.             new id = pTemp[playerid][pSelectedBusinessID];
  1762.             if(GetPlayerMoneyEx(playerid) < price) return SendClientMessage(playerid, CRED, "x {AC0000}[Ошибка] "W"Недостаточно денег");
  1763.             if(gBusiness[id][busiOwnerID])
  1764.             {
  1765.                 if(gBusiness[id][busiProduct] - floatround((price / 150) * 5) / 10 <= 0) return SendClientMessage(playerid, CGRAY, "Ошибка: В бизнесе недостаточно продуктов.");
  1766.             }
  1767.             gBusiness[id][busiBank] += floatround((price / 150) * 5);
  1768.             gBusiness[id][busiProduct] -= floatround((price / 150) * 5) / 10;
  1769.             UpdateBusinessText(id);
  1770.             UpdateBusinessDataEx(id+1,"product",gBusiness[id][busiProduct],"bank",gBusiness[id][busiBank]);
  1771.             if((houseid+1) && pData[playerid][pMysqlID] == gHouses[houseid][houseOwnerID])
  1772.             {
  1773.                 new slot=-1, cnt;
  1774.                 for(new i;i<3;i++)
  1775.                 {
  1776.                     if(gHouses[houseid][houseSkin][i]) cnt++;
  1777.                     if(gHouses[houseid][houseSkin][i] == pData[playerid][pSkin]) slot = i;
  1778.                 }
  1779.                 if(cnt >= 3)
  1780.                 {
  1781.                     if(slot == -1) return SendClientMessage(playerid,CRED,"Ошибка при нахождении заменямого скина в шкафу");
  1782.                     gHouses[houseid][houseSkin][slot] = skin;
  1783.                     UpdateHouseDress(houseid);
  1784.                 }
  1785.             }
  1786.             UpdatePlayerData(playerid,"skin",skin);
  1787.             TransferMoney(playerid,-1,price,"buyskin");
  1788.             pData[playerid][pSkin] = skin;
  1789.             pTemp[playerid][pChangingSkin] = false;
  1790.             if(GetPVarInt(playerid, "curskin") == pData[playerid][pFractionSkin] || (!(houseid+1) || ((houseid+1) > 0 && gHouses[houseid][houseOwnerID] != pData[playerid][pMysqlID])) && pData[playerid][pFraction]) SetPlayerSkin(playerid, GetPVarInt(playerid, "curskin"));
  1791.             else SetPlayerSkin(playerid,pData[playerid][pSkin]);
  1792.  
  1793.             HidePlayerClothesTD(playerid);
  1794.             pTemp[playerid][pJustTP] = true;
  1795.             SetPlayerPos(playerid, GetPVarFloat(playerid, "posx"), GetPVarFloat(playerid, "posy"), GetPVarFloat(playerid, "posz"));
  1796.             SetPlayerInterior(playerid, GetPVarInt(playerid, "interior"));
  1797.             SetPlayerVirtualWorld(playerid, GetPVarInt(playerid, "vw"));
  1798.             SetPlayerFacingAngle(playerid, GetPVarInt(playerid, "posa"));
  1799.             TogglePlayerControllable(playerid, 1);
  1800.             SetCameraBehindPlayer(playerid);
  1801.             DeletePVar(playerid, "posx");
  1802.             DeletePVar(playerid, "posy");
  1803.             DeletePVar(playerid, "posz");
  1804.             DeletePVar(playerid, "posa");
  1805.             DeletePVar(playerid, "interior");
  1806.             DeletePVar(playerid, "vw");
  1807.             DeletePVar(playerid, "clothes_sel");
  1808.             DeletePVar(playerid, "clothes_class");
  1809.             pTemp[playerid][pChangingSkin] = false;
  1810.         }
  1811.         case dFreez:
  1812.         {
  1813.             if(!response) return 1;
  1814.             new products,name[24];
  1815.             switch(listitem)
  1816.             {
  1817.                 case 0: {products = 10; strcat(name,"хот-дог");}
  1818.                 case 1: {products = 15; strcat(name,"бургер");}
  1819.                 case 2: {products = 30; strcat(name,"пиццу");}
  1820.             }
  1821.             new houseid = pData[playerid][pHouse] - 1;
  1822.             if(gHouses[houseid][houseProducts] < products)
  1823.             {
  1824.                 SFCM(playerid,CGRAY,"У Вас в холодильнике недостаточно продуктов. %d/%d",gHouses[houseid][houseProducts],products);
  1825.                 ShowPlayerDialog(playerid,dFreez,2,"Холодильник","Хот-дог ({"#cRED"}-10 прод. {"#cGREEN"}+20 сытость{"#cWHITE"})\nБургер ({"#cRED"}-15 прод. {"#cGREEN"}+30 сытость{"#cWHITE"})\nПицца ({"#cRED"}-30 прод. {"#cGREEN"}+60 сытость{"#cWHITE"})","Съесть","Отмена");
  1826.                 return 1;
  1827.             }
  1828.             new query[128];
  1829.             format(query,sizeof(query),"UPDATE `houses` SET `products` = '%d' WHERE `id` = '%d'",gHouses[houseid][houseProducts]-products,houseid+1);
  1830.             sql_query(zConn, query);
  1831.             gHouses[houseid][houseProducts] -= products;
  1832.             SFCM(playerid,CORANGE,"Чтобы съесть напишите {"#cWHITE"}/eat{"#cORANGE"}. Осталось %d продуктов",gHouses[houseid][houseProducts]);
  1833.             SendClientMessage(playerid,-1,"Чтобы положить поднос, введите {"#cORANGE"}/put{"#cWHITE"}.");
  1834.             new mes[128];
  1835.             format(mes,sizeof(mes),"взял(а) %s из холодильника",name);
  1836.             MeAction(playerid,mes);
  1837.             if(listitem == 1) SetPlayerAttachedObject(playerid,0,2214,3,0.232999,-0.376998,-0.408999,54.199886,-35.700153,-35.000019,1.000000,1.000000,1.000000);
  1838.             else if(listitem == 2) SetPlayerAttachedObject(playerid,0,2220,3,0.232999,-0.376998,-0.408999,54.199886,-35.700153,-35.000019,1.000000,1.000000,1.000000);
  1839.             else if(!listitem) SetPlayerAttachedObject(playerid,0,19346,6,0.059000,0.059999,0.000000,-97.399963,0.000000,0.000000);
  1840.             if(listitem) SetPlayerSpecialAction(playerid, 25);
  1841.             SetPVarInt(playerid,"respeat",1);
  1842.         }
  1843.     }
  1844. }
  1845.  
  1846. stock SaveStoreGun(houseid)
  1847. {
  1848.     new query[128],data[64];
  1849.     for(new i;i<9;i++)
  1850.     {
  1851.         if(!i) format(data,sizeof(data),"%d",gHouses[houseid][houseGun][i]);
  1852.         else format(data,sizeof(data),"%s|%d",data,gHouses[houseid][houseGun][i]);
  1853.     }
  1854.     format(query,sizeof(query),"UPDATE `houses` SET `gun` = '%s' WHERE `id` = '%d'",data,houseid+1);
  1855.     sql_query(zConn, query);
  1856.     return 1;
  1857. }
  1858. stock UpdateHouseGun(houseid)
  1859. {
  1860.     new hintid = gHouses[houseid][houseHint];
  1861.     for(new i;i<9;i++)
  1862.     {
  1863.         if(gHouses[houseid][houseGun][i] && !gHouseGunObject[houseid][i]) gHouseGunObject[houseid][i] = CreateDynamicObject(gHintGunID[i],gHintGun[hintid][i][0],gHintGun[hintid][i][1],gHintGun[hintid][i][2],gHintGun[hintid][i][3],gHintGun[hintid][i][4],gHintGun[hintid][i][5],houseid+1);
  1864.         else if(!gHouses[houseid][houseGun][i] && gHouseGunObject[houseid][i])
  1865.         {
  1866.             DestroyDynamicObject(gHouseGunObject[houseid][i]);
  1867.             gHouseGunObject[houseid][i] = 0;
  1868.         }
  1869.     }
  1870. }
  1871.  
  1872. stock GetGunCameraOffset(Float:x, Float:y, Float:angle, &Float:x2, &Float:y2)
  1873. {
  1874.     x2 = 0.7*floatsin(angle,degrees) + x;
  1875.     y2 = -0.7*floatcos(angle,degrees) + y;
  1876. }
  1877. stock UpdateHouseDress(houseid)
  1878. {
  1879.     new cnt;
  1880.     new hintid = gHouses[houseid][houseHint];
  1881.     for(new l;l<4;l++)
  1882.     {
  1883.         if(gHouses[houseid][houseSkin][l]) cnt++;
  1884.     }
  1885.     cnt--;
  1886.     if(cnt < 0 && gHouses[houseid][houseOwnerID]) printf("Возможны лаги с одеждой в доме %d",houseid+1);
  1887.     else if(cnt > 0)
  1888.     {
  1889.         CreateDynamicObject(2689,gHintDress[hintid][0][0],gHintDress[hintid][0][1],gHintDress[hintid][0][2],gHintDress[hintid][0][3],gHintDress[hintid][0][4],gHintDress[hintid][0][5],houseid+1);
  1890.         if(cnt > 1) CreateDynamicObject(2704,gHintDress[hintid][1][0],gHintDress[hintid][1][1],gHintDress[hintid][1][2],gHintDress[hintid][1][3],gHintDress[hintid][1][4],gHintDress[hintid][1][5],houseid+1);
  1891.         if(cnt > 2) CreateDynamicObject(2705,gHintDress[hintid][2][0],gHintDress[hintid][2][1],gHintDress[hintid][2][2],gHintDress[hintid][2][3],gHintDress[hintid][2][4],gHintDress[hintid][2][5],houseid+1);
  1892.     }
  1893.     new data[24],query[128];
  1894.     for(new i;i<4;i++)
  1895.     {
  1896.         if(!i) format(data,sizeof(data),"%d",gHouses[houseid][houseSkin][i]);
  1897.         else format(data,sizeof(data),"%s|%d",data,gHouses[houseid][houseSkin][i]);
  1898.     }
  1899.     format(query,sizeof(query),"UPDATE `houses` SET `skin` = '%s' WHERE id = '%d'",data,houseid+1);
  1900.     sql_query(zConn, query);
  1901.     return 1;
  1902. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement