Advertisement
execution88

Untitled

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