Advertisement
ejdrienxd

Untitled

Nov 21st, 2019
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.55 KB | None | 0 0
  1. /* Plugin generated by AMXX-Studio */
  2.  
  3. #include <amxmodx>
  4. #include <amxmisc>
  5. #include <nvault>
  6. #include <nvault_util>
  7. #include <fakemeta>
  8. #include <colorchat>
  9. #include <hamsandwich>
  10.  
  11. #define PLUGIN "Rangi CS:GO"
  12. #define VERSION "1.4"
  13. #define AUTHOR "Lukensky"
  14.  
  15. #define MAX_RANGI 19 //Maksymalna ilosc rang
  16. #define DATA "Rangi_csgo" //Nazwa pliku z danymi
  17. #define INFORMACJE_GRACZA 865
  18.  
  19. //www
  20. new const LINK_LOGO[] = "https://img.pogrywamy.pl/dzialy/dd2.png";
  21.  
  22. new Ranga_Gracza[33],
  23. Fragi_Gracza[33],
  24. Nick_Gracza[33][64];
  25.  
  26. new Nazwa_Rangi_CSGO[MAX_RANGI+1][]=
  27. {
  28. "Brak",
  29. "UnRanked",
  30. "Silver I",
  31. "Silver II",
  32. "Silver III",
  33. "Silver IV",
  34. "Silver Elite",
  35. "Silver Elite Master",
  36. "Gold Nova I",
  37. "Gold Nova II",
  38. "Gold Nova III",
  39. "Gold Nova Master",
  40. "Master Guardian I",
  41. "Master Guardian II",
  42. "Master Guardian Elite",
  43. "Distinguished Master Guardian",
  44. "Legendary Eagle",
  45. "Legendary Eagle Master",
  46. "Supreme Master First Class",
  47. "The Global Elite"
  48. }
  49.  
  50. new Fragi_Rangi_CSGO[MAX_RANGI]=
  51. {
  52. 0,
  53. 20,
  54. 40,
  55. 100,
  56. 180,
  57. 280,
  58. 420,
  59. 560,
  60. 730,
  61. 1000,
  62. 1400,
  63. 1900,
  64. 2500,
  65. 3100,
  66. 4499,
  67. 5499,
  68. 6700,
  69. 8000,
  70. 9500
  71. }
  72.  
  73. new SyncHudObj;
  74. new data;
  75.  
  76. //Top 15 Ranks CS:GO
  77. #define MAX_TOP 15
  78. new top_string[1512],
  79. top_name[MAX_TOP+1][64],
  80. top_ranga[MAX_TOP+1],
  81. top_fragi[MAX_TOP+1];
  82.  
  83. public plugin_init()
  84. {
  85. register_plugin(PLUGIN, VERSION, AUTHOR);
  86. register_dictionary("rangi_csgo.txt");
  87. data = nvault_open(DATA);
  88.  
  89. register_clcmd("say /csgo", "Ranks_CS_GO");
  90. register_clcmd("say /rangi", "ShowMotd");
  91.  
  92. RegisterHam(Ham_Spawn, "player", "Odrodzenie", 1);
  93. register_event("DeathMsg", "DeathMsg", "a");
  94. register_message(get_user_msgid("SayText"),"handleSayText");
  95.  
  96. SyncHudObj = CreateHudSyncObj();
  97. LoadTop();
  98. }
  99.  
  100. public client_authorized(id)
  101. {
  102. get_user_name(id, Nick_Gracza[id], 63);
  103.  
  104. Ranga_Gracza[id] = 0;
  105. Fragi_Gracza[id] = 0;
  106.  
  107. WczytajDane(id);
  108. }
  109.  
  110. public client_disconnectd(id)
  111. {
  112. ZapiszDane(id);
  113.  
  114. Ranga_Gracza[id] = 0;
  115. Fragi_Gracza[id] = 0;
  116. }
  117.  
  118. public Odrodzenie(id)
  119. {
  120. if(!task_exists(id+INFORMACJE_GRACZA))
  121. set_task(0.1, "InformacjeHUD", id+INFORMACJE_GRACZA, _, _, "b");
  122.  
  123. return PLUGIN_CONTINUE;
  124. }
  125.  
  126. public InformacjeHUD(id)
  127. {
  128. id -= INFORMACJE_GRACZA;
  129.  
  130. if(!is_user_connected(id))
  131. {
  132. remove_task(id+INFORMACJE_GRACZA);
  133. return PLUGIN_CONTINUE;
  134. }
  135.  
  136. if(!is_user_alive(id))
  137. {
  138. new target = pev(id, pev_iuser2);
  139. if(!target)
  140. return PLUGIN_CONTINUE;
  141.  
  142. new sz_status[15];
  143. if(get_user_flags(target) & ADMIN_LEVEL_H)
  144. format(sz_status, sizeof(sz_status), "VIP");
  145. else
  146. format(sz_status, sizeof(sz_status), "FREE");
  147.  
  148. new Float:fProcent = 0.0;
  149.  
  150. if(Ranga_Gracza[target] == MAX_RANGI || Ranga_Gracza[target] == 0) fProcent = 0.0;
  151. else if(Ranga_Gracza[target] < MAX_RANGI)
  152. {
  153. new ileMa = Fragi_Gracza[target],ilePotrzeba = Fragi_Rangi_CSGO[Ranga_Gracza[target]],ilePotrzebaBylo = Fragi_Rangi_CSGO[Ranga_Gracza[target]-1];
  154. fProcent = (float((ileMa - ilePotrzebaBylo)) / float((ilePotrzeba - ilePotrzebaBylo))) * 100.0;
  155. }
  156.  
  157. set_hudmessage(255, 255, 255, 0.01, 0.18, 0, 0.0, 0.3, 0.0, 0.0, -1);
  158. ShowSyncHudMsg(id, SyncHudObj, "%L", LANG_PLAYER, "RANGI_CSGO_HUD_TXT", sz_status, Nick_Gracza[target], Nazwa_Rangi_CSGO[Ranga_Gracza[target]], Fragi_Gracza[target], fProcent);
  159. return PLUGIN_CONTINUE;
  160. }
  161.  
  162. new sz_status[15];
  163. if(get_user_flags(id) & ADMIN_LEVEL_H)
  164. format(sz_status, charsmax(sz_status), "VIP");
  165. else
  166. format(sz_status, charsmax(sz_status), "FREE");
  167.  
  168. new Float:fProcent = 0.0;
  169.  
  170. if(Ranga_Gracza[id] == MAX_RANGI || Ranga_Gracza[id] == 0) fProcent = 0.0;
  171. else if(Ranga_Gracza[id]>0)
  172. {
  173. new ileMa = Fragi_Gracza[id],ilePotrzeba = Fragi_Rangi_CSGO[Ranga_Gracza[id]],ilePotrzebaBylo = Fragi_Rangi_CSGO[Ranga_Gracza[id]-1];
  174. fProcent = (float((ileMa - ilePotrzebaBylo)) / float((ilePotrzeba - ilePotrzebaBylo))) * 100.0;
  175. }
  176.  
  177. set_hudmessage(255, 255, 255, 0.01, 0.18, 0, 0.0, 0.3, 0.0, 0.0, -1);
  178. ShowSyncHudMsg(id, SyncHudObj, "%L", LANG_PLAYER, "RANGI_CSGO_HUD_TXT", sz_status, Nick_Gracza[id], Nazwa_Rangi_CSGO[Ranga_Gracza[id]], Fragi_Gracza[id], fProcent);
  179. return PLUGIN_CONTINUE;
  180. }
  181.  
  182. public DeathMsg()
  183. {
  184. new killer = read_data(1);
  185. new vid = read_data(2);
  186.  
  187. if(is_user_connected(killer) && is_user_connected(vid) && get_user_team(killer) != get_user_team(vid))
  188. {
  189. Fragi_Gracza[killer]+=1;
  190. ZapiszDane(killer);
  191.  
  192. SprawdzRange(killer);
  193. }
  194. }
  195.  
  196. public SprawdzRange(id)
  197. {
  198. if(Ranga_Gracza[id] == MAX_RANGI)
  199. return PLUGIN_HANDLED;
  200.  
  201. new poziom_zdobyty=false;
  202.  
  203. while(Fragi_Gracza[id] >= Fragi_Rangi_CSGO[Ranga_Gracza[id]])
  204. {
  205. Ranga_Gracza[id]+=1;
  206. poziom_zdobyty=true;
  207. }
  208.  
  209. if(poziom_zdobyty)
  210. {
  211. ColorChat(id,GREEN, "[CS:GO]^x03 Gratulujemy!.^x01 Wlasnie awansowales na range^x04 %s ", Nazwa_Rangi_CSGO[Ranga_Gracza[id]]);
  212. }
  213.  
  214. return PLUGIN_CONTINUE;
  215. }
  216.  
  217. public handleSayText(msgId,msgDest,msgEnt)
  218. {
  219. new id = get_msg_arg_int(1);
  220.  
  221. if(!is_user_connected(id))
  222. return PLUGIN_CONTINUE;
  223.  
  224. new szTmp[192], szTmp2[192];
  225. get_msg_arg_string(2, szTmp, charsmax(szTmp));
  226.  
  227. new szPrefix[64];
  228. format(szPrefix, 63, "^x01*^x03[%s]^x01*",Nazwa_Rangi_CSGO[Ranga_Gracza[id]]);
  229.  
  230. if(!equal(szTmp,"#Cstrike_Chat_All"))
  231. {
  232. add(szTmp2, charsmax(szTmp2), "^x01");
  233. add(szTmp2, charsmax(szTmp2), szPrefix);
  234. add(szTmp2, charsmax(szTmp2), " ");
  235. add(szTmp2, charsmax(szTmp2), szTmp);
  236. }
  237. else
  238. {
  239. new szPlayerName[64];
  240. get_user_name(id, szPlayerName, charsmax(szPlayerName));
  241.  
  242. get_msg_arg_string(4, szTmp, charsmax(szTmp));
  243. set_msg_arg_string(4, "");
  244.  
  245. add(szTmp2, charsmax(szTmp2), "^x01");
  246. add(szTmp2, charsmax(szTmp2), szPrefix);
  247. add(szTmp2, charsmax(szTmp2), "^x03 ");
  248. add(szTmp2, charsmax(szTmp2), szPlayerName);
  249. add(szTmp2, charsmax(szTmp2), "^x01 : ");
  250. add(szTmp2, charsmax(szTmp2), szTmp)
  251. }
  252.  
  253. set_msg_arg_string(2, szTmp2);
  254.  
  255. return PLUGIN_CONTINUE;
  256. }
  257.  
  258. public Ranks_CS_GO(id){
  259. show_motd(id, top_string, "Ranks CS:GO");
  260. }
  261.  
  262. LoadTop()
  263. {
  264. new key[64], data[33], timestamp, pos, vault = nvault_util_open(DATA);
  265. new num = nvault_util_count(vault);
  266.  
  267. new dane[6][32], name[64], ranga, fragi;
  268.  
  269. for(new i = 1; i <= num; i ++)
  270. {
  271. pos = nvault_util_read(vault, pos, key, 63, data, 31, timestamp)
  272.  
  273. replace_all(data, 255, "#", " ");
  274.  
  275. parse(data, dane[0], 32, dane[1], 32);
  276.  
  277. copy(name, 63, key);
  278. ranga = max(1, str_to_num(dane[0]));
  279. fragi = str_to_num(dane[1]);
  280.  
  281. for(new j = 0; j < MAX_TOP; j ++)
  282. {
  283. if(fragi>= top_fragi[j])
  284. {
  285. for(new k = MAX_TOP; k > j; k --)
  286. {
  287. copy(top_name[k], 31, top_name[k-1]);
  288.  
  289. top_ranga[k] = top_ranga[k-1];
  290. top_fragi[k] = top_fragi[k-1];
  291. }
  292.  
  293. copy(top_name[j], 63, name);
  294.  
  295. top_ranga[j] = ranga;
  296. top_fragi[j] = fragi;
  297.  
  298. break;
  299. }
  300. }
  301. }
  302.  
  303. new len = format(top_string, 1511, "<body bgcolor=#121212><center><img src=^"%s^" height=^"110^" width=^"470^"><hr size=2 color=#3399FF><table style=^"color:white;width:750%^";>", LINK_LOGO);
  304. len += format(top_string[len], 1511 - len, "<thead><tr style=^"color:orange;^"><td>Miejsce<td>Gracz<td>Ranga<td>Fragi</tr>");
  305.  
  306. for(new l = 0; l < MAX_TOP; l ++){
  307. if(equal(top_name[l], ""))
  308. break;
  309.  
  310. len += format(top_string[len], 1511 - len, "<tr><td><font color=red>%i.<td>%s<td>%s<td>%i", l+1, top_name[l], Nazwa_Rangi_CSGO[top_ranga[l]], top_fragi[l]);
  311. }
  312.  
  313. len += format(top_string[len], 1511 - len, "</table><hr size=2 color=#3399FF></center></body>");
  314.  
  315. return PLUGIN_CONTINUE;
  316. }
  317.  
  318. public ZapiszDane(id)
  319. {
  320. new vault1[64], vault2[128];
  321.  
  322. format(vault1, charsmax(vault1), "%s ",Nick_Gracza[id]);
  323. format(vault2, charsmax(vault2), "#%d#%d",Ranga_Gracza[id], Fragi_Gracza[id]);
  324. nvault_set(data, vault1, vault2);
  325. }
  326.  
  327. public WczytajDane(id)
  328. {
  329. new vault1[64], vault2[128];
  330.  
  331. format(vault1, charsmax(vault1), "%s ",Nick_Gracza[id]);
  332. nvault_get(data, vault1, vault2, 127);
  333.  
  334. replace_all(vault2, 127, "#", " ");
  335.  
  336. new dat[2][33];
  337. parse(vault2, dat[0], 32, dat[1], 32);
  338.  
  339. Ranga_Gracza[id] = str_to_num(dat[0])>0?str_to_num(dat[0]):1;
  340. Fragi_Gracza[id] = str_to_num(dat[1]);
  341. }
  342.  
  343. public ShowMotd(id)
  344. show_motd(id, "rangi.txt", "Informacje o rangach");
  345.  
  346. /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE
  347. *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par }
  348. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement