Facebook
From Bistre Curlew, 6 Years ago, written in Plain Text.
Embed
Download Paste or View Raw
Hits: 241
  1. stock LoadDoor(limit[] = "", bool:return_id = false)
  2. {
  3.         new rows, fields;
  4.         mysql_query(mySQLconnection, sprintf("SELECT * FROM ipb_doors %s", limit));  
  5.         cache_get_data(rows, fields);
  6.        
  7.         new d_id;
  8.        
  9.         for(new row = 0; row != rows; row++)
  10.         {
  11.                 d_id = CreateDynamicPickup(cache_get_row_int(row, 17), 2, cache_get_row_float(row, 5), cache_get_row_float(row, 6), cache_get_row_float(row, 7), cache_get_row_int(row, 9), cache_get_row_int(row, 10), -1, 200.0);
  12.                
  13.                 Iter_Add(Doors, d_id); 
  14.                
  15.                 cache_get_row(row, 2, Door[d_id][door_name], mySQLconnection, 40);
  16.                 cache_get_row(row, 23, Door[d_id][door_audio], mySQLconnection, 100);
  17.                
  18.                 Door[d_id][door_uid] = cache_get_row_int(row, 0);
  19.                 Door[d_id][door_type] = cache_get_row_int(row, 1);
  20.                 Door[d_id][door_owner_type] = cache_get_row_int(row, 3);
  21.                 Door[d_id][door_owner] = cache_get_row_int(row, 4);
  22.  
  23.                 Door[d_id][door_objects_limit] = cache_get_row_int(row, 22);
  24.                 Door[d_id][door_auto_closing] = !!cache_get_row_int(row, 19);
  25.                 Door[d_id][door_car_crosing] = !!cache_get_row_int(row, 20);
  26.                 Door[d_id][door_payment] = cache_get_row_int(row, 21);
  27.  
  28.                 Door[d_id][door_pos][0] = cache_get_row_float(row, 5);
  29.                 Door[d_id][door_pos][1] = cache_get_row_float(row, 6);
  30.                 Door[d_id][door_pos][2] = cache_get_row_float(row, 7);
  31.                 Door[d_id][door_pos][3] = cache_get_row_float(row, 8);
  32.                 Door[d_id][door_vw] = cache_get_row_int(row, 9);
  33.                 Door[d_id][door_int] = cache_get_row_int(row, 10);
  34.                 Door[d_id][door_spawn_pos][0] = cache_get_row_float(row, 11);
  35.                 Door[d_id][door_spawn_pos][1] = cache_get_row_float(row, 12);
  36.                 Door[d_id][door_spawn_pos][2] = cache_get_row_float(row, 13);
  37.                 Door[d_id][door_spawn_pos][3] = cache_get_row_float(row, 14);
  38.                 Door[d_id][door_spawn_vw] = cache_get_row_int(row, 15);
  39.                 if( Door[d_id][door_spawn_vw] == -1 ) Door[d_id][door_spawn_vw] = Door[d_id][door_uid];
  40.                 Door[d_id][door_spawn_int] = cache_get_row_int(row, 16);
  41.  
  42.                 Door[d_id][door_rentable] = cache_get_row_int(row, 24);
  43.                 Door[d_id][door_rent] = cache_get_row_int(row, 25);
  44.                
  45.                 Door[d_id][door_buyable] = cache_get_row_int(row, 26);
  46.                 Door[d_id][door_price] = cache_get_row_int(row, 27);
  47.  
  48.                 Door[d_id][door_time] = cache_get_row_int(row, 28);
  49.                
  50.                 Door[d_id][door_access] = cache_get_row_int(row, 29);
  51.                 Door[d_id][door_destroyed] = cache_get_row_int(row, 30);
  52.  
  53.                 new map_model = cache_get_row_int(row, 18);
  54.                 if( map_model != -1 )
  55.                 {
  56.                         Door[d_id][door_map_icon] = CreateDynamicMapIcon(Door[d_id][door_pos][0], Door[d_id][door_pos][1], Door[d_id][door_pos][2], map_model, 0, Door[d_id][door_vw], Door[d_id][door_int]);
  57.                 }
  58.                
  59.                 Door[d_id][door_closed] = Door[d_id][door_auto_closing];
  60.         }
  61.        
  62.         if( return_id ) return d_id;
  63.         return rows;
  64. }
  65.  
  66. stock DeleteDoor(d_id, bool:from_mysql = true)
  67. {      
  68.         if( from_mysql ) mysql_query(mySQLconnection, sprintf("DELETE FROM `ipb_doors` WHERE `door_uid` = %d", Door[d_id][door_uid]));
  69.        
  70.         Iter_Remove(Doors, d_id);
  71.        
  72.         DestroyDynamicPickup(d_id);
  73.        
  74.         if( IsValidDynamicMapIcon(Door[d_id][door_map_icon]) ) DestroyDynamicMapIcon(Door[d_id][door_map_icon]);
  75.        
  76.         for(new z=0; e_doors:z != e_doors; z++)
  77.     {
  78.                 Door[d_id][e_doors:z] = 0;
  79.     }
  80. }
  81.  
  82. stock GetDoorByUid(uid)
  83. {
  84.         foreach(new d_id : Doors)
  85.         {
  86.                 if( Door[d_id][door_uid] == uid ) return d_id;
  87.         }
  88.        
  89.         return -1;
  90. }
  91.  
  92. stock CanPlayerUseDoor(playerid, d_id)
  93. {
  94.         if( HasCrewFlag(playerid, CREW_FLAG_DOORS) ) return 1;
  95.        
  96.         switch( Door[d_id][door_owner_type] )
  97.         {
  98.                 case DOOR_OWNER_TYPE_PLAYER:
  99.                 {
  100.                         if( Door[d_id][door_owner] == pInfo[playerid][player_id] ) return 1;
  101.                         if( Door[d_id][door_uid] == pInfo[playerid][player_spawn]) return 1;
  102.                 }
  103.                
  104.                 case DOOR_OWNER_TYPE_GROUP:
  105.                 {
  106.                         new gid = GetGroupByUid(Door[d_id][door_owner]);
  107.                        
  108.                         new slot = GetPlayerGroupSlot(playerid, gid);
  109.                         if( slot > -1 )
  110.                         {
  111.                                 if( WorkerHasFlag(playerid, slot, WORKER_FLAG_DOORS) ) return 1;
  112.                         }
  113.                 }
  114.         }
  115.        
  116.         return 0;
  117. }
  118.  
  119. stock CanPlayerEditDoor(playerid, d_id)
  120. {
  121.         if(HasCrewFlag(playerid, CREW_FLAG_DOORS) ) return 1;
  122.         if(d_id == -1) return 0;
  123.         switch( Door[d_id][door_owner_type] )
  124.         {
  125.                 case DOOR_OWNER_TYPE_PLAYER:
  126.                 {
  127.                         if( Door[d_id][door_owner] == pInfo[playerid][player_id] ) return 1;
  128.                 }
  129.                
  130.                 case DOOR_OWNER_TYPE_GROUP:
  131.                 {
  132.                         new gid = GetGroupByUid(Door[d_id][door_owner]);
  133.                        
  134.                         new slot = GetPlayerGroupSlot(playerid, gid);
  135.                         if( slot > -1 )
  136.                         {
  137.                                 if( WorkerHasFlag(playerid, slot, WORKER_FLAG_LEADER) ) return 1;
  138.                         }
  139.                 }
  140.         }
  141.         return 0;
  142. }
  143.  
  144. stock CountDoorObjects(d_id)
  145. {
  146.         new count;
  147.         foreach(new oid : Objects)
  148.         {
  149.                 if( Object[oid][object_owner_type] == OBJECT_OWNER_TYPE_DOOR && Object[oid][object_owner] == Door[d_id][door_uid] ) count++;
  150.         }
  151.        
  152.         return count;
  153. }
  154.  
  155. stock CountDoorLabels(d_id)
  156. {
  157.         new count;
  158.         foreach(new lid : Labels)
  159.         {
  160.                 if( Label[Text3D:lid][label_owner_type] == LABEL_OWNER_TYPE_DOOR && Label[Text3D:lid][label_owner] == Door[d_id][door_uid] ) count++;
  161.         }
  162.        
  163.         return count;
  164. }
  165.  
  166. stock ShowPlayerDoorTextdraw(playerid, d_id)
  167. {
  168.         new header[64], all[256];
  169.         if( !HasCrewFlag(playerid, CREW_FLAG_DOORS) )
  170.         {
  171.                 if( Door[d_id][door_payment] > 0 && !Door[d_id][door_closed] ) format(header, sizeof(header), "%s (~g~$%d~w~)", Door[d_id][door_name], Door[d_id][door_payment]);
  172.                 else if( Door[d_id][door_payment] == 0 ) format(header, sizeof(header), "%s", Door[d_id][door_name]);
  173.         }
  174.         else
  175.         {
  176.                 if( Door[d_id][door_payment] > 0 && !Door[d_id][door_closed] ) format(header, sizeof(header), "%s ~y~(%d)~w~ (~g~$%d~w~)", Door[d_id][door_name], d_id, Door[d_id][door_payment]);
  177.                 else if( Door[d_id][door_payment] == 0 ) format(header, sizeof(header), "%s (%d)", Door[d_id][door_name], d_id);
  178.         }
  179.         amount_players_in_door[playerid]=0;
  180.         foreach(new p : Player)
  181.         {
  182.                 if( GetPlayerVirtualWorld(p) == Door[d_id][door_spawn_vw] )
  183.                 {
  184.                         amount_players_in_door[playerid]++;
  185.                 }
  186.         }
  187.        
  188.         if( Door[d_id][door_closed] ) format(all, sizeof(all), "%s~n~~n~~w~Nacisnij ~y~LALT + SPACE~w~ aby wejsc.~n~~n~~r~Drzwi sa zamkniete.", header);
  189.         else format(all, sizeof(all), "%s~n~~n~~w~Nacisnij ~y~LALT + SPACE~w~ aby wejsc.~n~~n~~w~%d osob wewnatrz", header, amount_players_in_door[playerid]);
  190.        
  191.        
  192.        
  193.        
  194.         TextDrawSetString(DoorInfo1[playerid], all);
  195.         TextDrawShowForPlayer(playerid, DoorInfo[playerid]);
  196.         TextDrawShowForPlayer(playerid, DoorInfo1[playerid]);
  197.         defer HidePlayerDoorText[3000](playerid);
  198. }
  199.  
  200. stock HidePlayerDoorTextdraw(playerid)
  201. {
  202.         TextDrawHideForPlayer(playerid, DoorInfo[playerid]);
  203.         TextDrawHideForPlayer(playerid, DoorInfo1[playerid]);
  204. }
  205.  
  206. stock DoorsDefaultInteriorsList(playerid, d_id, page=1)
  207. {
  208.         new rows, fields;
  209.         mysql_query(mySQLconnection, "SELECT COUNT(*) as count FROM `ipb_default_interiors`");
  210.         cache_get_data(rows, fields);
  211.  
  212.         new count = cache_get_row_int(0, 0);
  213.         new all_rows = count;
  214.        
  215.         new header[64], Float:pp = all_rows / 20;
  216.         format(header, sizeof(header), "Zmiana wnętrza drzwi (%d/%d)", page, floatround(pp, floatround_ceil));
  217.        
  218.         pInfo[playerid][player_dialog_tmp1] = page;
  219.        
  220.         DynamicGui_Init(playerid);
  221.         DynamicGui_SetDialogValue(playerid, d_id);
  222.        
  223.         new str[800];
  224.        
  225.         if( page > 1 )
  226.         {
  227.                 format(str, sizeof(str), "%s"HEX_COLOR_SAMP"<<< Poprzednia strona\n  \n", str);
  228.                 DynamicGui_AddRow(playerid, DG_DRZWI_CHANGE_INTERIOR_PREV);
  229.                
  230.                 DynamicGui_AddBlankRow(playerid);
  231.         }
  232.        
  233.         if( page == 1 )
  234.         {
  235.                 format(str, sizeof(str), "%s0.\tBrak (własne obiekty)\n", str);
  236.                 DynamicGui_AddRow(playerid, DG_DRZWI_CHANGE_INTERIOR_ROW, -1);
  237.         }
  238.        
  239.         mysql_query(mySQLconnection, sprintf("SELECT name, id FROM `ipb_default_interiors` LIMIT %d, 20", (page-1)*20));
  240.         cache_get_data(rows, fields);
  241.        
  242.         new tmp_str[60];
  243.        
  244.         for(new row = 0; row != rows; row++)
  245.         {
  246.                 cache_get_row(row, 0, tmp_str);
  247.                
  248.                 format(str, sizeof(str), "%s%d.\t%s\n", str, (row+1)+((page-1)*20), tmp_str);
  249.                 DynamicGui_AddRow(playerid, DG_DRZWI_CHANGE_INTERIOR_ROW, cache_get_row_int(row, 1));
  250.         }
  251.        
  252.         if( all_rows > (page*20) )
  253.         {
  254.                 format(str, sizeof(str), "%s"HEX_COLOR_SAMP"\t\t\t\t\t\t\t   Następna strona >>>\n", str);
  255.                 DynamicGui_AddRow(playerid, DG_DRZWI_CHANGE_INTERIOR_NEXT);
  256.         }
  257.        
  258.         ShowPlayerDialog(playerid, DIALOG_ADRZWI_CHANGE_INTERIOR, DIALOG_STYLE_LIST, header, str, "Wybierz", "Wróć");
  259.        
  260.         return 1;
  261. }
  262.