Advertisement
Guest User

Untitled

a guest
Sep 18th, 2019
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 40.36 KB | None | 0 0
  1. #define FILTERSCRIPT
  2.  
  3. #include <a_samp>
  4. #tryinclude <a_mysql>
  5. #tryinclude <sscanf2>
  6. #tryinclude <streamer>
  7.  
  8. #define MAX_KG                  15.0 // Максимальный вес
  9. #define MAX_COLORS              6
  10. #define MAX_DROP_OBJECTS        1000
  11. #define MAX_WAREHOUSES          1
  12.  
  13. #define d_inventory             1000
  14. #define d_onclick               1005
  15. #define d_info                  1010
  16. #define d_inputWeapon           1015
  17. #define d_sort                  1020
  18. #define d_customization         1025
  19. #define d_customizationChose    1030
  20. #define d_warehouse             1035
  21. #define d_whaction              1040
  22.  
  23. new colors[MAX_COLORS][] = {
  24.     "e7e7e7",
  25.     "96A8B2",
  26.     "BA5B50",
  27.     "274D63",
  28.     "b23687",
  29.     "69ee6b"
  30. };
  31. enum _playerInfo {
  32.     ID,
  33.     nickname[25],
  34.     slotsInfo[10],
  35.     slotsAmountInfo[10],
  36.     interfaceSettings[2]
  37. };
  38. new playerInfo[MAX_PLAYERS][_playerInfo];
  39.  
  40. enum {
  41.     ITEM_TYPE_FOOD = 1,
  42.     ITEM_TYPE_GUN,
  43.     ITEM_TYPE_CLOTHES
  44. };
  45.  
  46. enum {
  47.     SAVE_INTERFACE_SETTINGS = 0,
  48.     SAVE_INVENTORY
  49. };
  50.  
  51. enum _itemsInfo {
  52.     ID,
  53.     itemName[36],
  54.     itemInfo[128],
  55.     itemType,
  56.     itemModel,
  57.     Float:itemWeight
  58. };
  59.  
  60. new itemsInfo[][_itemsInfo] = {
  61.     {1, "Одежда", "Комплект вещей. Адик, найки, и прочая ересь", 3, 2843, 0.2},
  62.     {2, "Бургер", "Свежий и сочный бургер с бургер кинга", 1, 2703, 0.1},
  63.     {3, "AK-47", "Почти как репер, но только автомат", 2, 355, 3.4}
  64. };
  65.  
  66. enum _dropObjects {
  67.     objectInfo[2],
  68.     Float:objectPos[3],
  69.    
  70.     objectCreate,
  71.     Text3D:objectText
  72. };
  73. new dropObjects[MAX_DROP_OBJECTS][_dropObjects];
  74. new dropObjectsCount;
  75.  
  76. enum _warehouseInfo {
  77.     ID,
  78.     Float:wPos[3],
  79.     wSlotsInfo[5],
  80.     wSlotsAmountInfo[5]
  81. };
  82. new warehouseInfo[MAX_WAREHOUSES][_warehouseInfo];
  83. new warehouseCount;
  84.  
  85. public OnGameModeInit()
  86. {
  87.     new string[248];
  88.     mysql_connect("localhost","root","inventory","");
  89.  
  90.     mysql_set_charset("cp1251_general_ci");
  91.     mysql_query("SET NAMES 'cp1251'");
  92.     mysql_query("SET CHARACTER SET 'cp1251'");
  93.  
  94.     mysql_debug(1);
  95.     switch(mysql_ping()) {
  96.         case 1: print("connect mysql: access.");
  97.         case -1: {
  98.             print("connect mysql: fail.");
  99.             for(;;){}
  100.         }
  101.     }
  102.  
  103.     mysql_query("SELECT * FROM `server_dropObjects`");
  104.     mysql_store_result();
  105.     if(!mysql_num_rows()) {
  106.         return print("drop objects not found");
  107.     }
  108.     while(mysql_fetch_row(string)) {
  109.         sscanf(string,"p<|>a<i>[2]a<f>[3]",
  110.             dropObjects[dropObjectsCount][objectInfo],
  111.             dropObjects[dropObjectsCount][objectPos]
  112.         );
  113.  
  114.         switch(dropObjects[dropObjectsCount][objectInfo][0]) {
  115.             case 2: dropObjects[dropObjectsCount][objectCreate] = CreateDynamicObject(itemsInfo[dropObjects[dropObjectsCount][objectInfo][0]-1][itemModel], dropObjects[dropObjectsCount][objectPos][0], dropObjects[dropObjectsCount][objectPos][1], dropObjects[dropObjectsCount][objectPos][2]-0.94, -97.0, 0.0, 0.0); // Бургер
  116.             case 3: dropObjects[dropObjectsCount][objectCreate] = CreateDynamicObject(itemsInfo[dropObjects[dropObjectsCount][objectInfo][0]-1][itemModel], dropObjects[dropObjectsCount][objectPos][0], dropObjects[dropObjectsCount][objectPos][1], dropObjects[dropObjectsCount][objectPos][2]-0.94, 90.0, 0.0, 0.0); // Калаш
  117.             default: dropObjects[dropObjectsCount][objectCreate] = CreateDynamicObject(itemsInfo[dropObjects[dropObjectsCount][objectInfo][0]-1][itemModel], dropObjects[dropObjectsCount][objectPos][0], dropObjects[dropObjectsCount][objectPos][1], dropObjects[dropObjectsCount][objectPos][2]-1, 0.0, 0.0, 0.0); // Все остальное
  118.         }
  119.         new text[32];
  120.         format(text,sizeof text,"%s\nНажмите ALT чтобы поднять",itemsInfo[dropObjects[dropObjectsCount][objectInfo][0]-1][itemName]);
  121.         dropObjects[dropObjectsCount][objectText] = CreateDynamic3DTextLabel(text ,0xce7d7dAA, dropObjects[dropObjectsCount][objectPos][0], dropObjects[dropObjectsCount][objectPos][1], dropObjects[dropObjectsCount][objectPos][2] - 0.8,4.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,-1);
  122.  
  123.         dropObjectsCount++;
  124.     }
  125.     mysql_free_result();
  126.    
  127.     mysql_query("SELECT * FROM `server_warehouses`");
  128.     mysql_store_result();
  129.     if(!mysql_num_rows()) {
  130.         return print("warehouses not found");
  131.     }
  132.     while(mysql_fetch_row(string)) {
  133.         sscanf(string,"p<|>ia<f>[3]a<i>[5]a<i>[5]",
  134.             warehouseInfo[warehouseCount][ID],
  135.             warehouseInfo[warehouseCount][wPos],
  136.             warehouseInfo[warehouseCount][wSlotsInfo],
  137.             warehouseInfo[warehouseCount][wSlotsAmountInfo]
  138.         );
  139.  
  140.         warehouseCount++;
  141.     }
  142.     mysql_free_result();
  143.     return 1;
  144. }
  145.  
  146. public OnGameModeExit()
  147. {
  148.     return 1;
  149. }
  150.  
  151. public OnPlayerRequestClass(playerid, classid)
  152. {
  153.     new string[128];
  154.     format(string,sizeof string,"SELECT * FROM server_character WHERE nickname = '%s' LIMIT 1",playerInfo[playerid][nickname]);
  155.     mysql_query(string);
  156.     mysql_store_result();
  157.     if(!mysql_num_rows()) {
  158.         format(string,sizeof string,"INSERT INTO server_character (nickname) VALUES ('%s')",playerInfo[playerid][nickname]);
  159.         mysql_query(string);
  160.     } else {
  161.          if(mysql_num_rows() == 1) {
  162.             mysql_fetch_row_format(string, "|");
  163.             sscanf(string,"p<|>i{s[24]}a<i>[10]a<i>[10]a<i>[2]",
  164.                 playerInfo[playerid][ID],
  165.                 playerInfo[playerid][slotsInfo],
  166.                 playerInfo[playerid][slotsAmountInfo],
  167.                 playerInfo[playerid][interfaceSettings]);
  168.             print("user load");
  169.          }
  170.     }
  171.     mysql_free_result();
  172.     return 1;
  173. }
  174.  
  175. public OnPlayerConnect(playerid)
  176. {
  177.     for(new _playerInfo:i; i < _playerInfo; ++i) playerInfo[playerid][i] = 0;
  178.     GetPlayerName(playerid,playerInfo[playerid][nickname],24);
  179.    
  180.     if(GetPVarInt(playerid,"selectItem")) DeletePVar(playerid,"selectItem");
  181.     if(GetPVarInt(playerid,"customizationIndex")) DeletePVar(playerid,"customizationIndex");
  182.     if(GetPVarInt(playerid,"transferMode")) DeletePVar(playerid,"transferMode");
  183.     if(GetPVarInt(playerid,"giveItemFromPlayerToWarehouse")) DeletePVar(playerid,"giveItemFromPlayerToWarehouse");
  184.     return 1;
  185. }
  186.  
  187. public OnPlayerDisconnect(playerid, reason)
  188. {
  189.     return 1;
  190. }
  191.  
  192. public OnPlayerSpawn(playerid)
  193. {
  194.     ApplyAnimation(playerid,"WUZI","null",0.0,0,0,0,0,0);
  195.     return 1;
  196. }
  197.  
  198. public OnPlayerDeath(playerid, killerid, reason)
  199. {
  200.     return 1;
  201. }
  202.  
  203. public OnVehicleSpawn(vehicleid)
  204. {
  205.     return 1;
  206. }
  207.  
  208. public OnVehicleDeath(vehicleid, killerid)
  209. {
  210.     return 1;
  211. }
  212.  
  213. public OnPlayerText(playerid, text[])
  214. {
  215.     return 1;
  216. }
  217.  
  218. public OnPlayerCommandText(playerid, cmdtext[])
  219. {
  220.     new cmd[32], params[128];
  221.     sscanf(cmdtext, "s[32]s[128]", cmd, params);
  222.  
  223.     if(!strcmp(cmd, "/inv", true)) {
  224.         if(GetPVarInt(playerid,"selectItem")) {
  225.             if(!GetPVarInt(playerid,"transferMode")) DeletePVar(playerid,"selectItem");
  226.         }
  227.         new string[1024];
  228.         new Float:kg;
  229.  
  230.         for(new i; i < 10; i++) {
  231.             if(playerInfo[playerid][slotsInfo][i] == 0) format(string,sizeof string,"%s{%s}[%d]{%s} Пустой слот\n",
  232.                 string,
  233.                 colors[playerInfo[playerid][interfaceSettings][0]],
  234.                 i+1,
  235.                 colors[playerInfo[playerid][interfaceSettings][1]]
  236.             );
  237.             else {
  238.                 if(itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] == ITEM_TYPE_CLOTHES || itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] == ITEM_TYPE_GUN) kg += itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemWeight];
  239.                 else kg += itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemWeight] * playerInfo[playerid][slotsAmountInfo][i];
  240.                
  241.                 format(string,sizeof string,"%s{%s}[%d]{%s} %s [%s: {%s}%d{%s}%s]\n",
  242.                     string,
  243.                     colors[playerInfo[playerid][interfaceSettings][0]],
  244.                     i+1,
  245.                     colors[playerInfo[playerid][interfaceSettings][1]],
  246.                     itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemName],
  247.                     itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] == ITEM_TYPE_CLOTHES ? ("Номер") : itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] == ITEM_TYPE_GUN ? ("Патронов") : ("Кол-во"),
  248.                     colors[playerInfo[playerid][interfaceSettings][0]],
  249.                     playerInfo[playerid][slotsAmountInfo][i],
  250.                     colors[playerInfo[playerid][interfaceSettings][1]],
  251.                     itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] == ITEM_TYPE_CLOTHES ? ("") : (" шт.")
  252.                 );
  253.             }
  254.         }
  255.         format(string,sizeof string,"%s{%s}Сортировать вещи в инвентаре\n{%s}Кастомизация",string, colors[playerInfo[playerid][interfaceSettings][0]],colors[playerInfo[playerid][interfaceSettings][0]]);
  256.         new head[24];
  257.         format(head,sizeof head,"{%s}Общий вес: %.1f kg",colors[playerInfo[playerid][interfaceSettings][0]],kg);
  258.         ShowPlayerDialog(playerid,d_inventory,DIALOG_STYLE_LIST,head,string,"Выбрать","Закрыть");
  259.         return 1;
  260.     }
  261.    
  262.     if(!strcmp(cmd,"/whinv", true)) {
  263.         return showWarehouseInventory(playerid,0);
  264.     }
  265.    
  266.     if(!strcmp(cmd,"/additem",true)) {
  267.         if(sscanf(params,"dd",params[0],params[1])) return SendClientMessage(playerid,-1,"usage: /additem [itemid] [itemamount]");
  268.         if(params[0] < 1 || params[0] > 3) return 1;
  269.         addItem(playerid,params[0],params[1]);
  270.         return 1;
  271.     }
  272.     return 1;
  273. }
  274.  
  275. public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
  276. {
  277.     return 1;
  278. }
  279.  
  280. public OnPlayerExitVehicle(playerid, vehicleid)
  281. {
  282.     return 1;
  283. }
  284.  
  285. public OnPlayerStateChange(playerid, newstate, oldstate)
  286. {
  287.     return 1;
  288. }
  289.  
  290. public OnPlayerEnterCheckpoint(playerid)
  291. {
  292.     return 1;
  293. }
  294.  
  295. public OnPlayerLeaveCheckpoint(playerid)
  296. {
  297.     return 1;
  298. }
  299.  
  300. public OnPlayerEnterRaceCheckpoint(playerid)
  301. {
  302.     return 1;
  303. }
  304.  
  305. public OnPlayerLeaveRaceCheckpoint(playerid)
  306. {
  307.     return 1;
  308. }
  309.  
  310. public OnRconCommand(cmd[])
  311. {
  312.     return 1;
  313. }
  314.  
  315. public OnPlayerRequestSpawn(playerid)
  316. {
  317.     return 1;
  318. }
  319.  
  320. public OnObjectMoved(objectid)
  321. {
  322.     return 1;
  323. }
  324.  
  325. public OnPlayerObjectMoved(playerid, objectid)
  326. {
  327.     return 1;
  328. }
  329.  
  330. public OnPlayerPickUpPickup(playerid, pickupid)
  331. {
  332.     return 1;
  333. }
  334.  
  335. public OnVehicleMod(playerid, vehicleid, componentid)
  336. {
  337.     return 1;
  338. }
  339.  
  340. public OnVehiclePaintjob(playerid, vehicleid, paintjobid)
  341. {
  342.     return 1;
  343. }
  344.  
  345. public OnVehicleRespray(playerid, vehicleid, color1, color2)
  346. {
  347.     return 1;
  348. }
  349.  
  350. public OnPlayerSelectedMenuRow(playerid, row)
  351. {
  352.     return 1;
  353. }
  354.  
  355. public OnPlayerExitedMenu(playerid)
  356. {
  357.     return 1;
  358. }
  359.  
  360. public OnPlayerInteriorChange(playerid, newinteriorid, oldinteriorid)
  361. {
  362.     return 1;
  363. }
  364.  
  365. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  366. {
  367.     if((((newkeys & (1024)) == (1024)) && ((oldkeys & (1024)) != (1024)))) {// key alt
  368.         for(new i; i < MAX_DROP_OBJECTS; i++) {
  369.             if(IsPlayerInRangeOfPoint(playerid,2.0,dropObjects[i][objectPos][0],dropObjects[i][objectPos][1],dropObjects[i][objectPos][2])) {
  370.                 takeDropItem(playerid,i);
  371.                 break;
  372.             }
  373.         }
  374.     }
  375.  
  376.     return 1;
  377. }
  378.  
  379. public OnRconLoginAttempt(ip[], password[], success)
  380. {
  381.     return 1;
  382. }
  383.  
  384. public OnPlayerUpdate(playerid)
  385. {
  386.     return 1;
  387. }
  388.  
  389. public OnPlayerStreamIn(playerid, forplayerid)
  390. {
  391.     return 1;
  392. }
  393.  
  394. public OnPlayerStreamOut(playerid, forplayerid)
  395. {
  396.     return 1;
  397. }
  398.  
  399. public OnVehicleStreamIn(vehicleid, forplayerid)
  400. {
  401.     return 1;
  402. }
  403.  
  404. public OnVehicleStreamOut(vehicleid, forplayerid)
  405. {
  406.     return 1;
  407. }
  408.  
  409. public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
  410. {
  411.     new string[248], head[32];
  412.    
  413.     new
  414.         c1 = playerInfo[playerid][interfaceSettings][0],
  415.         c2 = playerInfo[playerid][interfaceSettings][1]
  416.     ;
  417.    
  418.     switch(dialogid) {
  419.         case d_inventory: {
  420.             if(!response) {
  421.                 if(GetPVarInt(playerid,"transferMode")) DeletePVar(playerid,"transferMode");
  422.                 if(GetPVarInt(playerid,"giveItemFromPlayerToWarehouse")) DeletePVar(playerid,"giveItemFromPlayerToWarehouse");
  423.                 return 1;
  424.             }
  425.             switch(listitem) {
  426.                 case 0..9: {
  427.                     if(playerInfo[playerid][slotsInfo][listitem] == 0 && GetPVarInt(playerid,"transferMode")) {
  428.                         playerInfo[playerid][slotsInfo][listitem] = playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")];
  429.                         playerInfo[playerid][slotsAmountInfo][listitem] = playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")];
  430.                         playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] = 0;
  431.                         playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")] = 0;
  432.                         DeletePVar(playerid,"selectItem");
  433.                         DeletePVar(playerid,"transferMode");
  434.                         saveInventory(playerid,SAVE_INVENTORY);
  435.                         return OnPlayerCommandText(playerid,"/inv");
  436.                     }
  437.  
  438.                     else if(playerInfo[playerid][slotsInfo][listitem] != 0 && GetPVarInt(playerid,"transferMode")) {
  439.                         SendClientMessage(playerid,-1,"Выбрать можно только свободный слот!");
  440.                         return OnPlayerCommandText(playerid,"/inv");
  441.                     }
  442.  
  443.                     else if(playerInfo[playerid][slotsInfo][listitem] == 0 && GetPlayerWeapon(playerid) == 30) {
  444.                         format(string,sizeof string,"{%s}Вы действительно хотите убрать {%s}%s{%s} [Патронов: {%s}%d{%s}] в инвентарь?",
  445.                         colors[c1],colors[c2],itemsInfo[getElementItem(GetPlayerWeapon(playerid)) - 1][itemName], colors[c1], colors[c2], GetPlayerAmmo(playerid), colors[1]);
  446.                         return ShowPlayerDialog(playerid,d_inputWeapon,DIALOG_STYLE_MSGBOX," ",string,"Далее","Отмена");
  447.                     }
  448.  
  449.                     else if(playerInfo[playerid][slotsInfo][listitem] != 0 && GetPVarInt(playerid,"giveItemFromPlayerToWarehouse")) {
  450.                         addWarehouseItem(0,playerInfo[playerid][slotsInfo][listitem],playerInfo[playerid][slotsAmountInfo][listitem]);
  451.                         playerInfo[playerid][slotsInfo][listitem] = 0;
  452.                         playerInfo[playerid][slotsAmountInfo][listitem] = 0;
  453.                         saveInventory(playerid,SAVE_INVENTORY);
  454.                         SendClientMessage(playerid,-1,"Вы убрали предмет на склад.");
  455.                         return OnPlayerCommandText(playerid,"/whinv");
  456.                     }
  457.                    
  458.                     else if(playerInfo[playerid][slotsInfo][listitem] == 0 && GetPVarInt(playerid,"giveItemFromPlayerToWarehouse")) {
  459.                         SendClientMessage(playerid,-1,"Выберите предмет который хотите убрать на склад.");
  460.                         return OnPlayerCommandText(playerid,"/inv");
  461.                     }
  462.                    
  463.                     else if(playerInfo[playerid][slotsInfo][listitem] == 0) return OnPlayerCommandText(playerid,"/inv");
  464.                     SetPVarInt(playerid,"selectItem",listitem);
  465.                     format(head,sizeof head,"{%s}Предмет: %s",colors[c1],itemsInfo[playerInfo[playerid][slotsInfo][listitem] - 1][itemName]);
  466.                     switch(itemsInfo[playerInfo[playerid][slotsInfo][listitem] - 1][itemType]) {
  467.                         case ITEM_TYPE_FOOD: format(string,sizeof string,"{%s}[1] {%s}Информация\n{%s}[2] {%s}Переместить\n{%s}[3] {%s}Выбросить\n{%s}[4] {%s}Удалить\n{%s}[5] {%s}Использовать",colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2]);
  468.                         case ITEM_TYPE_GUN: format(string,sizeof string,"{%s}[1] {%s}Информация\n{%s}[2] {%s}Переместить\n{%s}[3] {%s}Выбросить\n{%s}[4] {%s}Удалить\n{%s}[5] {%s}Взять в руки",colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2]);
  469.                         case ITEM_TYPE_CLOTHES: format(string,sizeof string,"{%s}[1] {%s}Информация\n{%s}[2] {%s}Переместить\n{%s}[3] {%s}Выбросить\n{%s}[4] {%s}Удалить\n{%s}[5] {%s}Переодеться",colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2], colors[c1], colors[c2]);
  470.                     }
  471.                     ShowPlayerDialog(playerid,d_onclick,DIALOG_STYLE_LIST,head,string,"Выбрать","Назад");
  472.                 }
  473.                
  474.                 case 10: {
  475.                     if(GetPVarInt(playerid,"transferMode")) DeletePVar(playerid,"transferMode");
  476.                     if(GetPVarInt(playerid,"giveItemFromPlayerToWarehouse")) DeletePVar(playerid,"giveItemFromPlayerToWarehouse");
  477.                     format(string,sizeof string,"{%s}[1] {%s}Сортировка по весу от малого к большему\n{%s}[2] {%s}Сортировка по весу от большего к малому\n",
  478.                     colors[c1],colors[c2],colors[c1],colors[c2]);
  479.                     format(head,sizeof head,"{%s}Сортировка вещей в инвентаре",colors[c1]);
  480.                     ShowPlayerDialog(playerid,d_sort,DIALOG_STYLE_LIST,head,string,"Выбрать","Назад");
  481.                 }
  482.                
  483.                 case 11: {
  484.                     if(GetPVarInt(playerid,"transferMode")) DeletePVar(playerid,"transferMode");
  485.                     if(GetPVarInt(playerid,"giveItemFromPlayerToWarehouse")) DeletePVar(playerid,"giveItemFromPlayerToWarehouse");
  486.                     format(string,sizeof string,"{%s}[1] {%s}Настройка первого цвета\n{%s}[2] {%s}Настройка второго цвета",colors[c1],colors[c2],colors[c1],colors[c2]);
  487.                     format(head,sizeof head,"{%s}Кастомизация",colors[c1]);
  488.                     ShowPlayerDialog(playerid,d_customization,DIALOG_STYLE_LIST,head,string,"Выбрать","Назад");
  489.                 }
  490.             }
  491.         }
  492.  
  493.         case d_sort: {
  494.             if(!response) return 1;
  495.             for(new i; i < 9; i++) {
  496.                 for(new j; j < 9; j++) {
  497.                     if(playerInfo[playerid][slotsInfo][j] == 0 && playerInfo[playerid][slotsInfo][j+1]) {
  498.                         playerInfo[playerid][slotsInfo][j] = playerInfo[playerid][slotsInfo][j+1];
  499.                         playerInfo[playerid][slotsAmountInfo][j] = playerInfo[playerid][slotsAmountInfo][j+1];
  500.                         playerInfo[playerid][slotsInfo][j+1] = 0;
  501.                         playerInfo[playerid][slotsAmountInfo][j+1] = 0;
  502.                     }
  503.                 }
  504.             }
  505.             new arrayLenght;
  506.             for(new i; i < 10; i++) {
  507.                 if(!playerInfo[playerid][slotsInfo][i]) break;
  508.                 else arrayLenght++;
  509.             }
  510.            
  511.             new item, itemAmount;
  512.             new Float:currentKg, Float:currentKg2;
  513.            
  514.             if(!listitem) {
  515.                 for(new i; i < arrayLenght-1; i++) {
  516.                     for(new j; j < arrayLenght-1; j++) {
  517.                         currentKg = itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemType] == ITEM_TYPE_GUN || itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemType] == ITEM_TYPE_CLOTHES ? itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemWeight] : itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemWeight] * playerInfo[playerid][slotsAmountInfo][j];
  518.                         currentKg2 = itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemType] == ITEM_TYPE_GUN || itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemType] == ITEM_TYPE_CLOTHES ? itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemWeight] : itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemWeight] * playerInfo[playerid][slotsAmountInfo][j+1];
  519.                         if(currentKg > currentKg2) {
  520.                             item = playerInfo[playerid][slotsInfo][j];
  521.                             itemAmount = playerInfo[playerid][slotsAmountInfo][j];
  522.                             playerInfo[playerid][slotsInfo][j] = playerInfo[playerid][slotsInfo][j+1];
  523.                             playerInfo[playerid][slotsAmountInfo][j] = playerInfo[playerid][slotsAmountInfo][j+1];
  524.                             playerInfo[playerid][slotsInfo][j+1] = item;
  525.                             playerInfo[playerid][slotsAmountInfo][j+1] = itemAmount;
  526.                         }
  527.                     }
  528.                 }
  529.             }
  530.             else if(listitem) {
  531.                 for(new i; i < arrayLenght-1; i++) {
  532.                     for(new j; j < arrayLenght-1; j++) {
  533.                         currentKg = itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemType] == ITEM_TYPE_GUN || itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemType] == ITEM_TYPE_CLOTHES ? itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemWeight] : itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemWeight] * playerInfo[playerid][slotsAmountInfo][j];
  534.                         currentKg2 = itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemType] == ITEM_TYPE_GUN || itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemType] == ITEM_TYPE_CLOTHES ? itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemWeight] : itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemWeight] * playerInfo[playerid][slotsAmountInfo][j+1];
  535.                         //if(itemsInfo[playerInfo[playerid][slotsInfo][j] - 1][itemWeight] < itemsInfo[playerInfo[playerid][slotsInfo][j+1] - 1][itemWeight]) {
  536.                         if(currentKg < currentKg2) {
  537.                             item = playerInfo[playerid][slotsInfo][j];
  538.                             itemAmount = playerInfo[playerid][slotsAmountInfo][j];
  539.                             playerInfo[playerid][slotsInfo][j] = playerInfo[playerid][slotsInfo][j+1];
  540.                             playerInfo[playerid][slotsAmountInfo][j] = playerInfo[playerid][slotsAmountInfo][j+1];
  541.                             playerInfo[playerid][slotsInfo][j+1] = item;
  542.                             playerInfo[playerid][slotsAmountInfo][j+1] = itemAmount;
  543.                         }
  544.                     }
  545.                 }
  546.             }
  547.             saveInventory(playerid,SAVE_INVENTORY);
  548.             return OnPlayerCommandText(playerid,"/inv");
  549.         }
  550.  
  551.         case d_inputWeapon: {
  552.             if(!response) return 1;
  553.             new Float:kg;
  554.             for(new i; i < 10; i++) {
  555.                 if(playerInfo[playerid][slotsInfo][i] == 0) continue;
  556.                 if(itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] != ITEM_TYPE_CLOTHES && itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] != ITEM_TYPE_GUN) kg += itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemWeight] * playerInfo[playerid][slotsAmountInfo][i];
  557.                 else kg += itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemWeight];
  558.             }
  559.             if(kg + itemsInfo[getElementItem(GetPlayerWeapon(playerid)) - 1][itemWeight] > MAX_KG) return SendClientMessage(playerid,-1,"Вы не сможете взять так много веса.");
  560.             new slot = false;
  561.             for(new i; i < 10; i++) {
  562.                 if(playerInfo[playerid][slotsInfo][i] == 0) {
  563.                     playerInfo[playerid][slotsInfo][i] = getElementItem(GetPlayerWeapon(playerid));
  564.                     playerInfo[playerid][slotsAmountInfo][i] = GetPlayerAmmo(playerid);
  565.                     saveInventory(playerid,SAVE_INVENTORY);
  566.                     slot = true;
  567.                     SendClientMessage(playerid,-1,"Вы успешно убрали оружие к себе в инвентарь.");
  568.                     resetWeapon(playerid, GetPlayerWeapon(playerid));
  569.                     break;
  570.                 }
  571.             }
  572.             if(!slot) return SendClientMessage(playerid,-1,"В вашем инвентаре нет свободного слота.");
  573.         }
  574.  
  575.         case d_onclick: {
  576.             if(!response) return OnPlayerCommandText(playerid,"/inv");
  577.             switch(listitem) {
  578.                 case 0: {
  579.                     format(head,sizeof head,"{%s}Информация",colors[c1]);
  580.                     format(string,sizeof string,"{%s}Предмет: {%s}%s\n{%s}%s: {%s}%d\n{%s}Вес: {%s}%.1f\n\n{%s}Описание: {%s}%s",
  581.                     colors[c1],
  582.                     colors[c2],
  583.                     itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] - 1][itemName],
  584.                     colors[c1],
  585.                     itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")]-1][itemType] == ITEM_TYPE_CLOTHES ? ("Номер") : ("Кол-во"),
  586.                     colors[c2],
  587.                     playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")],
  588.                     colors[c1],
  589.                     colors[c2],
  590.                     itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] - 1][itemType] == ITEM_TYPE_CLOTHES || itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] - 1][itemType] == ITEM_TYPE_GUN ? itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] - 1][itemWeight] : itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] - 1][itemWeight] * playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")],
  591.                     colors[c1],
  592.                     colors[c2],
  593.                     itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] - 1][itemInfo]);
  594.                     ShowPlayerDialog(playerid,d_info,DIALOG_STYLE_MSGBOX,head,string,"Назад","");
  595.                 }
  596.                
  597.                 case 1: {
  598.                     SetPVarInt(playerid,"transferMode",true);
  599.                     SendClientMessage(playerid,-1,"Выберите любой свободный слот для перемещения предмета.");
  600.                     OnPlayerCommandText(playerid,"/inv");
  601.                 }
  602.                
  603.                 case 2: {
  604.                     new Float:x, Float:y, Float:z;
  605.                     GetPlayerPos(playerid,x,y,z);
  606.                     format(string,sizeof string,"%s\nНажмите ALT чтобы поднять",itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")]-1][itemName]);
  607.                     for(new i; i < MAX_DROP_OBJECTS; i++) {
  608.                         if(dropObjects[i][objectInfo][0] == 0 && dropObjects[i][objectInfo][1] == 0) {
  609.                             dropObjects[i][objectInfo][0] = playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")];
  610.                             dropObjects[i][objectInfo][1] = playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")];
  611.                             dropObjects[i][objectPos][0] = x;
  612.                             dropObjects[i][objectPos][1] = y;
  613.                             dropObjects[i][objectPos][2] = z;
  614.                            
  615.                             switch(dropObjects[i][objectInfo][0]) {
  616.                                 case 2: dropObjects[i][objectCreate] = CreateDynamicObject(itemsInfo[dropObjects[i][objectInfo][0]-1][itemModel], dropObjects[i][objectPos][0], dropObjects[i][objectPos][1], dropObjects[i][objectPos][2]-0.94, -97.0, 0.0, 0.0); // Бургер
  617.                                 case 3: dropObjects[i][objectCreate] = CreateDynamicObject(itemsInfo[dropObjects[i][objectInfo][0]-1][itemModel], dropObjects[i][objectPos][0], dropObjects[i][objectPos][1], dropObjects[i][objectPos][2]-0.94, 90.0, 0.0, 0.0); // Калаш
  618.                                 default: dropObjects[i][objectCreate] = CreateDynamicObject(itemsInfo[dropObjects[i][objectInfo][0]-1][itemModel], dropObjects[i][objectPos][0], dropObjects[i][objectPos][1], dropObjects[i][objectPos][2]-1, 0.0, 0.0, 0.0); // Все остальное
  619.                             }
  620.                             dropObjects[i][objectText] = CreateDynamic3DTextLabel(string ,0xce7d7dAA, dropObjects[i][objectPos][0], dropObjects[i][objectPos][1], dropObjects[i][objectPos][2] - 0.8,4.0,INVALID_PLAYER_ID,INVALID_VEHICLE_ID,0,-1,GetPlayerVirtualWorld(playerid));
  621.  
  622.                             playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] = 0;
  623.                             playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")] = 0;
  624.                             saveInventory(playerid,SAVE_INVENTORY);
  625.                            
  626.                             ApplyAnimation(playerid,"WUZI", "Wuzi_grnd_chk",4.0, 0, 1, 1, 0, 0, 1);
  627.                            
  628.                             format(string,sizeof string,"INSERT INTO `server_dropObjects`(`objectInfo`, `objectPos`) VALUES ('%d|%d','%f|%f|%f')",
  629.                             dropObjects[i][objectInfo][0],dropObjects[i][objectInfo][1],dropObjects[i][objectPos][0],dropObjects[i][objectPos][1],dropObjects[i][objectPos][2]);
  630.                             mysql_query(string);
  631.                             break;
  632.                         }
  633.                     }
  634.                 }
  635.                
  636.                 case 3: {
  637.                     playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] = 0;
  638.                     playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")] = 0;
  639.                     saveInventory(playerid,SAVE_INVENTORY);
  640.                    
  641.                     return OnPlayerCommandText(playerid,"/inv");
  642.                 }
  643.                
  644.                 case 4: {
  645.                     switch(itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")]-1][itemType]) {
  646.                         case ITEM_TYPE_FOOD: {
  647.                             playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")] -= 1;
  648.                             if(!playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")]) {
  649.                                 playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] = 0;
  650.                                 playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")] = 0;
  651.                                 saveInventory(playerid,SAVE_INVENTORY);
  652.                             }
  653.                             format(string,sizeof string,"Вы съели %s",itemsInfo[playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] - 1][itemName]);
  654.                             SendClientMessage(playerid,-1,string);
  655.  
  656.                             new Float:health, Float:limitHealth;
  657.                             GetPlayerHealth(playerid,health);
  658.                             if (health + 5.0 > 100.0) limitHealth = 100.0;
  659.                             else limitHealth = health + 5.0;
  660.                             SetPlayerHealth(playerid,limitHealth);
  661.                         }
  662.                         case ITEM_TYPE_GUN: {
  663.                             GivePlayerWeapon(playerid, getElementGun(playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")]), playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")]);
  664.                             playerInfo[playerid][slotsInfo][GetPVarInt(playerid,"selectItem")] = 0;
  665.                             playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")] = 0;
  666.                             saveInventory(playerid,SAVE_INVENTORY);
  667.                         }
  668.                         case ITEM_TYPE_CLOTHES: {
  669.                             new skin = GetPlayerSkin(playerid);
  670.                             SetPlayerSkin(playerid,playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")]);
  671.                             playerInfo[playerid][slotsAmountInfo][GetPVarInt(playerid,"selectItem")] = skin;
  672.                         }
  673.                     }
  674.                 }
  675.             }
  676.         }
  677.        
  678.         case d_info: return OnPlayerCommandText(playerid,"/inv");
  679.        
  680.         case d_customization: {
  681.             if(!response) return OnPlayerCommandText(playerid,"/inv");
  682.             SetPVarInt(playerid,"customizationIndex",listitem);
  683.             for(new i; i < MAX_COLORS; i++) {
  684.                 format(string,sizeof string,"%s{%s}Цвет номер %d\n",string,colors[i],i+1);
  685.             }
  686.             format(head,sizeof head,"{%s}%s",colors[c1],listitem ? ("Второй цвет") : ("Первый цвет"));
  687.             ShowPlayerDialog(playerid,d_customizationChose,DIALOG_STYLE_LIST,head,string,"Выбрать","Назад");
  688.         }
  689.        
  690.         case d_customizationChose: {
  691.             if(!response) {
  692.                 DeletePVar(playerid,"customizationIndex");
  693.                 format(string,sizeof string,"{%s}[1] {%s}Настройка первого цвета\n{%s}[2] {%s}Настройка второго цвета",colors[c1],colors[c2],colors[c1],colors[c2]);
  694.                 format(head,sizeof head,"{%s}Кастомизация",colors[c1]);
  695.                 ShowPlayerDialog(playerid,d_customization,DIALOG_STYLE_LIST,head,string,"Выбрать","Назад");
  696.             }
  697.             playerInfo[playerid][interfaceSettings][GetPVarInt(playerid,"customizationIndex")] = listitem;
  698.             DeletePVar(playerid,"customizationIndex");
  699.            
  700.             OnPlayerCommandText(playerid,"/inv");
  701.            
  702.             saveInventory(playerid,SAVE_INTERFACE_SETTINGS);
  703.         }
  704.        
  705.         case d_warehouse: {
  706.             if(!response) return 1;
  707.             if(warehouseInfo[0][wSlotsInfo][listitem] == 0) {
  708.                 SetPVarInt(playerid,"giveItemFromPlayerToWarehouse",1);
  709.                 SendClientMessage(playerid,-1,"Выберите предмет который хотите перенести на склад.");
  710.                 return OnPlayerCommandText(playerid,"/inv");
  711.             }
  712.             SetPVarInt(playerid,"selectItem",listitem);
  713.             ShowPlayerDialog(playerid,d_whaction,DIALOG_STYLE_LIST," ","[1] Забрать предмет\n[2] Удалить предмет","Выбрать","Назад");
  714.         }
  715.        
  716.         case d_whaction: {
  717.             if(!response) return OnPlayerCommandText(playerid,"/whinv");
  718.             if(!listitem) addItem(playerid,warehouseInfo[0][wSlotsInfo][GetPVarInt(playerid,"selectItem")],warehouseInfo[0][wSlotsAmountInfo][GetPVarInt(playerid,"selectItem")]);
  719.             warehouseInfo[0][wSlotsInfo][GetPVarInt(playerid,"selectItem")] = 0;
  720.             warehouseInfo[0][wSlotsAmountInfo][GetPVarInt(playerid,"selectItem")] = 0;
  721.             saveInventory(-1,-1,0);
  722.         }
  723.     }
  724.     return 1;
  725. }
  726.  
  727. stock showWarehouseInventory(playerid, whid) {
  728.     printf("whid - %d",whid);
  729.     new string[248];
  730.     for(new i; i < 5; i++) {
  731.         if(warehouseInfo[whid][wSlotsInfo][i] == 0) format(string,sizeof string,"%s[%d] Пустой слот\n",string,i+1);
  732.         else format(string,sizeof string,"%s[%d] %s [%s: %d]\n",
  733.             string,
  734.             i+1,
  735.             itemsInfo[warehouseInfo[whid][wSlotsInfo][i] - 1][itemName],
  736.             itemsInfo[warehouseInfo[whid][wSlotsInfo][i] - 1][itemType] == ITEM_TYPE_CLOTHES ? ("Номер") : itemsInfo[warehouseInfo[whid][wSlotsInfo][i] - 1][itemType] == ITEM_TYPE_GUN ? ("Патронов") : ("Кол-во"),
  737.             warehouseInfo[whid][wSlotsAmountInfo][i]
  738.         );
  739.     }
  740.     ShowPlayerDialog(playerid,d_warehouse,DIALOG_STYLE_LIST," ",string,"Выбрать","Закрыть");
  741.     return 1;
  742. }
  743.  
  744. stock saveInventory(playerid,type,warehouse = -1) {
  745.     new string[248];
  746.     if(warehouse != -1) {
  747.         format(string,sizeof string,"UPDATE `server_warehouses` SET `wSlotsInfo` = '%d|%d|%d|%d|%d', `wSlotsAmountInfo` = '%d|%d|%d|%d|%d' WHERE `ID` = '%d'",
  748.         warehouseInfo[warehouse][wSlotsInfo][0],warehouseInfo[warehouse][wSlotsInfo][1],warehouseInfo[warehouse][wSlotsInfo][2],warehouseInfo[warehouse][wSlotsInfo][3],warehouseInfo[warehouse][wSlotsInfo][4],
  749.         warehouseInfo[warehouse][wSlotsAmountInfo][0],warehouseInfo[warehouse][wSlotsAmountInfo][1],warehouseInfo[warehouse][wSlotsAmountInfo][2],warehouseInfo[warehouse][wSlotsAmountInfo][3],warehouseInfo[warehouse][wSlotsAmountInfo][4],
  750.         warehouseInfo[warehouse][ID]);
  751.         mysql_query(string);
  752.         return 1;
  753.     }
  754.     switch(type) {
  755.         case SAVE_INTERFACE_SETTINGS: {
  756.             format(string,sizeof string,"UPDATE `server_character` SET `interfaceSettings` = '%d|%d' WHERE `nickname` = '%s'",
  757.             playerInfo[playerid][interfaceSettings][0],playerInfo[playerid][interfaceSettings][1],playerInfo[playerid][nickname]);
  758.             mysql_query(string);
  759.         }
  760.         case SAVE_INVENTORY: {
  761.             format(string,sizeof string,"UPDATE `server_character` SET `slotsInfo` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d', `slotsAmountInfo` = '%d|%d|%d|%d|%d|%d|%d|%d|%d|%d' WHERE `nickname` = '%s'",
  762.             playerInfo[playerid][slotsInfo][0],playerInfo[playerid][slotsInfo][1],playerInfo[playerid][slotsInfo][2],playerInfo[playerid][slotsInfo][3],playerInfo[playerid][slotsInfo][4],playerInfo[playerid][slotsInfo][5],playerInfo[playerid][slotsInfo][6],playerInfo[playerid][slotsInfo][7],playerInfo[playerid][slotsInfo][8],playerInfo[playerid][slotsInfo][9],
  763.             playerInfo[playerid][slotsAmountInfo][0],playerInfo[playerid][slotsAmountInfo][1],playerInfo[playerid][slotsAmountInfo][2],playerInfo[playerid][slotsAmountInfo][3],playerInfo[playerid][slotsAmountInfo][4],playerInfo[playerid][slotsAmountInfo][5],playerInfo[playerid][slotsAmountInfo][6],playerInfo[playerid][slotsAmountInfo][7],playerInfo[playerid][slotsAmountInfo][8],playerInfo[playerid][slotsAmountInfo][9],
  764.             playerInfo[playerid][nickname]);
  765.             mysql_query(string);
  766.         }
  767.     }
  768.     return 1;
  769. }
  770.  
  771. stock getElementItem(objectid) {
  772.     switch(objectid) {
  773.         case 30: return 3;
  774.         default: return -1;
  775.     }
  776.     return 0;
  777. }
  778.  
  779. stock getElementGun(element) {
  780.     switch(element) {
  781.         case 3: return 30;
  782.         default: return -1;
  783.     }
  784.     return 0;
  785. }
  786.  
  787. stock resetWeapon(playerid,weaponid = 0) {
  788.     new weapon[13], ammo[13];
  789.     for(new i; i < 13; i++) {
  790.         GetPlayerWeaponData(playerid, i, weapon[i], ammo[i]);
  791.     }
  792.     ResetPlayerWeapons(playerid);
  793.     if(weaponid) {
  794.         for(new i; i < 13; i++) {
  795.             if(weaponid != weapon[i]) GivePlayerWeapon(playerid, weapon[i], ammo[i]);
  796.         }
  797.     }
  798. }
  799.  
  800. stock takeDropItem(playerid,dropid) {
  801.     new string[128], Float:kg;
  802.     if(dropObjects[dropid][objectInfo][0] == 3) {
  803.         GivePlayerWeapon(playerid, getElementGun(dropObjects[dropid][objectInfo][0]), dropObjects[dropid][objectInfo][1]);
  804.         SendClientMessage(playerid,-1,"Вы подняли оружие с земли.");
  805.         DestroyDynamicObject(dropObjects[dropid][objectCreate]);
  806.         DestroyDynamic3DTextLabel(dropObjects[dropid][objectText]);
  807.  
  808.         format(string,sizeof string,"DELETE FROM `server_dropobjects` WHERE `objectPos` = '%f|%f|%f'",
  809.         dropObjects[dropid][objectPos][0],dropObjects[dropid][objectPos][1],dropObjects[dropid][objectPos][2]);
  810.         mysql_query(string);
  811.  
  812.         dropObjects[dropid][objectInfo][0] = 0;
  813.         dropObjects[dropid][objectInfo][1] = 0;
  814.         for(new x; x < 3; x++) dropObjects[dropid][objectPos][x] = 0.0;
  815.         return 1;
  816.     } else {
  817.         for(new j; j < 10; j++) {
  818.             if(playerInfo[playerid][slotsInfo][j] == 0) continue;
  819.             if(itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemType] != ITEM_TYPE_CLOTHES && itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemType] != ITEM_TYPE_GUN) kg += itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemWeight] * playerInfo[playerid][slotsAmountInfo][j];
  820.             else kg += itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemWeight];
  821.         }
  822.     }
  823.    
  824.     new Float:currentKg = itemsInfo[dropObjects[dropid][objectInfo][0] - 1][itemType] == ITEM_TYPE_CLOTHES ? itemsInfo[dropObjects[dropid][objectInfo][0] - 1][itemWeight] : itemsInfo[dropObjects[dropid][objectInfo][0] - 1][itemWeight] * dropObjects[dropid][objectInfo][1];
  825.     if(kg + currentKg > MAX_KG) return SendClientMessage(playerid,-1,"Вы не можете взять столько веса.");
  826.  
  827.     new slot = false;
  828.     for(new j; j < 10; j++) {
  829.         if(!playerInfo[playerid][slotsInfo][j]) {
  830.             playerInfo[playerid][slotsInfo][j] = dropObjects[dropid][objectInfo][0];
  831.             playerInfo[playerid][slotsAmountInfo][j] = dropObjects[dropid][objectInfo][1];
  832.             saveInventory(playerid,SAVE_INVENTORY);
  833.  
  834.             DestroyDynamicObject(dropObjects[dropid][objectCreate]);
  835.             DestroyDynamic3DTextLabel(dropObjects[dropid][objectText]);
  836.  
  837.             format(string,sizeof string,"DELETE FROM `server_dropobjects` WHERE `objectPos` = '%f|%f|%f'",
  838.             dropObjects[dropid][objectPos][0],dropObjects[dropid][objectPos][1],dropObjects[dropid][objectPos][2]);
  839.             mysql_query(string);
  840.  
  841.             dropObjects[dropid][objectInfo][0] = 0;
  842.             dropObjects[dropid][objectInfo][1] = 0;
  843.             for(new x; x < 3; x++) dropObjects[dropid][objectPos][x] = 0.0;
  844.  
  845.             SendClientMessage(playerid,-1,"Вы подняли предмет с земли.");
  846.             slot = true;
  847.             break;
  848.         }
  849.     }
  850.     if(!slot) return SendClientMessage(playerid,-1,"У вас нет свободного слота в инвентаре.");
  851.     return 1;
  852. }
  853.  
  854. stock addItem(playerid, itemid, itemamount) {
  855.     new Float:kg;
  856.     new slot = false;
  857.     for(new i; i < 10; i++) {
  858.         if(playerInfo[playerid][slotsInfo][i] == 0) continue;
  859.         if(itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] != ITEM_TYPE_CLOTHES && itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemType] != ITEM_TYPE_GUN) kg += itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemWeight] * playerInfo[playerid][slotsAmountInfo][i];
  860.         else kg += itemsInfo[playerInfo[playerid][slotsInfo][i]-1][itemWeight];
  861.     }
  862.  
  863.     new Float:currentKg = itemsInfo[itemid - 1][itemType] == ITEM_TYPE_CLOTHES ? itemsInfo[itemid - 1][itemWeight] : itemsInfo[itemid - 1][itemType] == ITEM_TYPE_GUN ? itemsInfo[itemid - 1][itemWeight] : itemsInfo[itemid - 1][itemWeight] * itemamount;
  864.    
  865.     if(kg + currentKg > MAX_KG) return SendClientMessage(playerid,-1,"Не сможете взять с собой так много веса.");
  866.    
  867.     for(new i; i < 10; i++) {
  868.         if(!playerInfo[playerid][slotsInfo][i]) {
  869.             playerInfo[playerid][slotsInfo][i] = itemid;
  870.             playerInfo[playerid][slotsAmountInfo][i] = itemamount;
  871.             saveInventory(playerid,SAVE_INVENTORY);
  872.             slot = true;
  873.             break;
  874.         }
  875.     }
  876.     if(!slot) return SendClientMessage(playerid,-1,"Нет места в инвентаре.");
  877.     return 1;
  878. }
  879.  
  880. stock addWarehouseItem(warehouseid, itemid, itemamount) {
  881.     new slot = false;
  882.     for(new i; i < 5; i++) {
  883.         if(warehouseInfo[warehouseid][wSlotsInfo][i] == 0) {
  884.             warehouseInfo[warehouseid][wSlotsInfo][i] = itemid;
  885.             warehouseInfo[warehouseid][wSlotsAmountInfo][i] = itemamount;
  886.             saveInventory(-1,-1,warehouseid);
  887.             slot = true;
  888.             break;
  889.         }
  890.     }
  891.     if(!slot) return printf("У склада %d нет свободного места.",warehouseid);
  892.     return 1;
  893. }
  894.  
  895. stock takeWarehouseItem(playerid, warehouseid, index) {
  896.     if(warehouseInfo[warehouseid][index] == 0) return SendClientMessage(playerid,-1,"Данный слот пуст.");
  897.     new Float:kg;
  898.     for(new j; j < 10; j++) {
  899.         if(playerInfo[playerid][slotsInfo][j] == 0) continue;
  900.         if(itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemType] != ITEM_TYPE_CLOTHES && itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemType] != ITEM_TYPE_GUN) kg += itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemWeight] * playerInfo[playerid][slotsAmountInfo][j];
  901.         else kg += itemsInfo[playerInfo[playerid][slotsInfo][j]-1][itemWeight];
  902.     }
  903.  
  904.     new Float:currentKg = itemsInfo[warehouseInfo[warehouseid][wSlotsInfo][index] - 1][itemType] == ITEM_TYPE_CLOTHES ? itemsInfo[warehouseInfo[warehouseid][wSlotsInfo][index] - 1][itemWeight] : itemsInfo[warehouseInfo[warehouseid][wSlotsInfo][index] - 1][itemWeight] * warehouseInfo[warehouseid][wSlotsAmountInfo][index];
  905.     if(kg + currentKg > MAX_KG) return SendClientMessage(playerid,-1,"Вы не можете взять столько веса.");
  906.    
  907.     new slot = false;
  908.     for(new j; j < 10; j++) {
  909.         if(!playerInfo[playerid][slotsInfo][j]) {
  910.             playerInfo[playerid][slotsInfo][j] = warehouseInfo[warehouseid][wSlotsInfo][index];
  911.             playerInfo[playerid][slotsAmountInfo][j] = warehouseInfo[warehouseid][wSlotsAmountInfo][index];
  912.             saveInventory(playerid,SAVE_INVENTORY);
  913.            
  914.             warehouseInfo[warehouseid][wSlotsInfo][index] = 0;
  915.             warehouseInfo[warehouseid][wSlotsAmountInfo][index] = 0;
  916.             saveInventory(playerid,-1,warehouseid);
  917.             slot = true;
  918.             break;
  919.         }
  920.     }
  921.     if(!slot) return SendClientMessage(playerid,-1,"У вас нет свободного слота в инвентаре.");
  922. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement