HLMOD.HU Forrás Megtekintés - www.hlmod.hu
  1. #include <amxmodx>
  2.  
  3. #define MAX_NAME_LEN 32
  4.  
  5. #define PLUGIN "Steam ~ Non Steam listázása"
  6. #define VERSION "1.0"
  7. #define AUTHOR "Csabika20034"
  8.  
  9. public plugin_init()
  10. {
  11. register_plugin(PLUGIN, VERSION, AUTHOR);
  12. register_clcmd("say /stns", "ShowSTNSMenu");
  13. }
  14.  
  15. public ShowSTNSMenu(id)
  16. {
  17. if (!is_user_connected(id))
  18. return PLUGIN_HANDLED;
  19.  
  20. new menu = menu_create("Steam / Non-Steam Players", "MenuHandler");
  21.  
  22. menu_additem(menu, "Steames játékosok", "0");
  23. menu_additem(menu, "Non-Steames játékosok", "1");
  24.  
  25. menu_display(id, menu, 0);
  26. return PLUGIN_HANDLED;
  27. }
  28.  
  29. public MenuHandler(id, menu, item)
  30. {
  31. if (item == MENU_EXIT)
  32. {
  33. menu_destroy(menu);
  34. return PLUGIN_HANDLED;
  35. }
  36.  
  37. new info[3];
  38. menu_item_getinfo(menu, item, _, info, charsmax(info));
  39.  
  40. new choice = str_to_num(info);
  41. menu_destroy(menu);
  42.  
  43. new subMenu;
  44.  
  45. if (choice == 0)
  46. {
  47. subMenu = menu_create("Steam Játékosok", "SubMenuHandler");
  48.  
  49. new count = 0;
  50.  
  51. for (new i = 1; i <= get_maxplayers(); i++)
  52. {
  53. if (is_user_connected(i) && is_user_steam(i))
  54. {
  55. new name[MAX_NAME_LEN];
  56. new authid[32];
  57. get_user_name(i, name, charsmax(name));
  58. get_user_authid(i, authid, charsmax(authid));
  59.  
  60. new friendCode = SteamIDToFriendCode(authid);
  61.  
  62. new text[64];
  63. formatex(text, charsmax(text), "%s ~ Barátkód: %d", name, friendCode);
  64.  
  65. new data[6];
  66. num_to_str(i, data, charsmax(data));
  67.  
  68. menu_additem(subMenu, text, data);
  69. count++;
  70. }
  71. }
  72.  
  73. if (count == 0)
  74. {
  75. client_print(id, print_chat, "[ST/NS] Nincs egyetlen Steam játékos sem a szerveren.");
  76. menu_destroy(subMenu);
  77. return PLUGIN_HANDLED;
  78. }
  79.  
  80. menu_display(id, subMenu, 0);
  81. }
  82. else
  83. {
  84. subMenu = menu_create("Non-Steam Játékosok", "SubMenuHandler");
  85.  
  86. new count = 0;
  87.  
  88. for (new i = 1; i <= get_maxplayers(); i++)
  89. {
  90. if (is_user_connected(i) && !is_user_steam(i))
  91. {
  92. new name[MAX_NAME_LEN];
  93. get_user_name(i, name, charsmax(name));
  94.  
  95. new data[6];
  96. num_to_str(i, data, charsmax(data));
  97.  
  98. menu_additem(subMenu, name, data);
  99. count++;
  100. }
  101. }
  102.  
  103. if (count == 0)
  104. {
  105. client_print(id, print_chat, "[ST/NS] Nincs egyetlen Non-Steam játékos sem a szerveren.");
  106. menu_destroy(subMenu);
  107. return PLUGIN_HANDLED;
  108. }
  109.  
  110. menu_display(id, subMenu, 0);
  111. }
  112.  
  113. menu_destroy(menu);
  114. return PLUGIN_HANDLED;
  115. }
  116.  
  117. public SubMenuHandler(id, menu, item)
  118. {
  119. if (item == MENU_EXIT)
  120. {
  121. menu_destroy(menu);
  122. return PLUGIN_HANDLED;
  123. }
  124.  
  125. new info[6];
  126. menu_item_getinfo(menu, item, _, info, charsmax(info));
  127.  
  128. new target = str_to_num(info);
  129.  
  130. if (is_user_connected(target))
  131. {
  132. new name[MAX_NAME_LEN];
  133. new authid[32];
  134.  
  135. get_user_name(target, name, charsmax(name));
  136. get_user_authid(target, authid, charsmax(authid));
  137.  
  138. new friendCode = SteamIDToFriendCode(authid);
  139.  
  140. client_print(id, print_chat, "[ST/NS] %s barátkódja: %d", name, friendCode);
  141. }
  142.  
  143. menu_destroy(menu);
  144. return PLUGIN_HANDLED;
  145. }
  146.  
  147. stock is_user_steam(id)
  148. {
  149. new authid[32];
  150. get_user_authid(id, authid, charsmax(authid));
  151. return (strncmp(authid, "STEAM_", 6) == 0);
  152. }
  153.  
  154. stock SteamIDToFriendCode(const authid[])
  155. {
  156. new len = strlen(authid);
  157. new parts[3];
  158. new idx = 0;
  159. new num = 0;
  160.  
  161. for (new i = 0; i < len; i++)
  162. {
  163. new c = authid[i];
  164. if (c >= '0' && c <= '9')
  165. {
  166. num = num * 10 + (c - '0');
  167. }
  168. else if (c == ':')
  169. {
  170. parts[idx++] = num;
  171. num = 0;
  172. if (idx > 2) break;
  173. }
  174. }
  175.  
  176. if (idx == 2)
  177. parts[2] = num;
  178.  
  179. return parts[2] * 2 + parts[1];
  180. }
  181.