Advertisement
execution88

Untitled

Apr 9th, 2025
938
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.75 KB | None | 0 0
  1. static enum E_FAMILY_MEMBERS_QUERY_INFO
  2. {
  3.     Cache: E_FAMILY_MEMBERS_QUERY_CACHE,
  4.     E_FAMILY_MEMBERS_QUERY_UNIX
  5. }
  6.  
  7. static g_family_members_query_info[MAX_FAMILY][E_FAMILY_MEMBERS_QUERY_INFO];
  8. static g_reset_fam_members_query_info[E_FAMILY_MEMBERS_QUERY_INFO] =
  9. {
  10.     Cache: 0,
  11.     0
  12. };
  13.  
  14. stock ShowFamilyMembersAll(playerid)
  15. {
  16.     new family_id = FamilyPlayer:GetId(playerid);
  17.  
  18.     if (family_id == INVALID_FAMILY_ID) {
  19.         return false;
  20.     }
  21.  
  22.     new row_count;
  23.  
  24.     if (g_family_members_query_info[family_id][E_FAMILY_MEMBERS_QUERY_CACHE] == g_reset_fam_members_query_info[E_FAMILY_MEMBERS_QUERY_CACHE] ||
  25.         g_family_members_query_info[family_id][E_FAMILY_MEMBERS_QUERY_UNIX] < unix)
  26.     {
  27.         if (cache_is_valid(g_family_members_query_info[family_id][E_FAMILY_MEMBERS_QUERY_CACHE]))
  28.         {
  29.             cache_delete(g_family_members_query_info[family_id][E_FAMILY_MEMBERS_QUERY_CACHE]);
  30.         }
  31.  
  32.         LoadFamilyMembersAll(playerid);
  33.     }
  34.     else
  35.     {
  36.         g_string_4096 = "[";
  37.  
  38.         cache_unset_active();
  39.         cache_set_active(g_family_members_query_info[family_id][E_FAMILY_MEMBERS_QUERY_CACHE]);
  40.  
  41.         row_count = cache_num_rows();
  42.  
  43.         new
  44.             name[MAX_PLAYER_NAME_RUS],
  45.             rank_id,
  46.             warn,
  47.             completed_count,
  48.             status,
  49.             family_rank_name[MAX_FAMILY_RANK_NAME];
  50.  
  51.         for (new i = 0; i < row_count; i++)
  52.         {
  53.            
  54.             cache_get_value_int(i, "rank_id", rank_id);
  55.             cache_get_value_int(i, "warn", warn);
  56.             cache_get_value_int(i, "status", status);
  57.             cache_get_value_int(i, "completed_count", completed_count);
  58.             cache_get_value(i, "name", name, sizeof(name));
  59.  
  60.             FamilyRank:GetName(family_id, rank_id, family_rank_name);
  61.  
  62.             format(g_string_256, sizeof(g_string_256), "\
  63.                 {\
  64.                     \"id\":%d,\
  65.                     \"status\":\"%d\",\
  66.                     \"nickName\":\"%s\",\
  67.                     \"post\":\"%s\",\
  68.                     \"rank\":%d, \
  69.                     \"totalQuests\":%d, \
  70.                     \"reprimand\":%d \
  71.                 },",
  72.                 i,
  73.                 status != 1001,
  74.                 name,
  75.                 family_rank_name,
  76.                 completed_count,
  77.                 warn
  78.             );
  79.  
  80.             strcat(g_string_4096, g_string_256);
  81.  
  82.             if (strlen(g_string_4096) > 3900)
  83.             {
  84.                 g_string_4096[strlen(g_string_4096) - 1] = EOS;
  85.                 strcat(g_string_4096, "]");
  86.  
  87.                 // SendFamilyMembers(playerid, g_string_4096);
  88.                 g_string_4096 = "[";
  89.             }
  90.         }
  91.  
  92.         g_string_4096[strlen(g_string_4096) - 1] = EOS;
  93.         strcat(g_string_4096, "]");
  94.  
  95.         // SendFamilyMembers(playerid, g_string_4096);
  96.     }
  97.    
  98.     return true;
  99. }
  100.  
  101. stock LoadFamilyMembersAll(playerid)
  102. {
  103.     new family_id = FamilyPlayer:GetId(playerid);
  104.  
  105.     if (family_id == INVALID_FAMILY_ID)
  106.     {
  107.         return false;
  108.     }
  109.  
  110.     format(g_string_512, sizeof g_string_512, "\
  111.         SELECT \
  112.             a.NickName AS name, \
  113.             fp.account_id, \
  114.             fp.rank_id, \
  115.             fp.warn, \
  116.             a.Online_status as status, \
  117.             (SELECT COUNT(*) AS completed_count \
  118.                 FROM contracts \
  119.                 WHERE account_id = fp.account_id AND type = %d AND completed = 1) as contact_count) \
  120.         FROM \
  121.             "#FAMILY_PLAYER_TABLE_NAME" fp \
  122.         INNER JOIN \
  123.             Qelksekm AS a \
  124.         ON \
  125.             a.ID=fp.account_id \
  126.         WHERE \
  127.             fp.family_id=%d \
  128.         ORDER BY \
  129.             fp.rank_id DESC",
  130.         CONTRACT_TYPE_FAMILY,
  131.         Family:GetSQLId(family_id));
  132.     mysql_tquery(connection[HANDLE_SERVER], g_string_512, "OnLoadFamilyMembersAll", "ddd", playerid, ConnectPersonalID[playerid], family_id);
  133.  
  134.     return true;
  135. }
  136.  
  137. void OnLoadFamilyMembersAll(playerid, connect_id, family_id)
  138. {
  139.     if (connect_id != ConnectPersonalID[playerid])
  140.     {
  141.         return true;
  142.     }
  143.  
  144.     new rows = cache_num_rows();
  145.  
  146.     if (rows == 0)
  147.     {
  148.         return SendErrorNotify(playerid, "Информация о составе семьи не найдена");
  149.     }
  150.  
  151.     g_family_members_query_info[family_id][E_FAMILY_MEMBERS_QUERY_CACHE] = cache_save();
  152.     g_family_members_query_info[family_id][E_FAMILY_MEMBERS_QUERY_UNIX] = unix + FAMILY_MEMBERS_QUERY_DELAY;
  153.  
  154.     ShowFamilyMembersAll(playerid);
  155.  
  156.     return true;
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement