Advertisement
Kwarde

Top5List FIX

Oct 28th, 2011
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <a_samp>
  2. #include <djson>
  3. #include <zcmd>
  4.  
  5. #undef MAX_PLAYERS
  6. #define MAX_SLOTS 30
  7.  
  8. #define COLOR_WHITE 0xFFFFFFAA
  9. #define COLOR_GREEN 0xFF0000AA
  10. #define COLOR_YELLOW 0xFFFF00AA
  11. #define COLOR_GRAY 0xAFAFAFAA
  12. #define ploop(%0) for(new %0 = 0; %0 < MAX_SLOTS; %0++) if(IsPlayerConnected(%0))
  13.  
  14. new PlayerName[MAX_SLOTS][MAX_PLAYER_NAME],
  15. Text:TextDraw0, Text:TextDraw1,
  16. Text:TextDraw2, Text:TextDraw3,
  17. Text:TextDraw4, Text:TextDraw5,
  18. Text:R_1[MAX_SLOTS], Text:Stats[MAX_SLOTS],
  19. Kills[MAX_SLOTS], Deaths[MAX_SLOTS]
  20. ;
  21.  
  22. public OnFilterScriptInit()
  23. {
  24. djson_GameModeInit();
  25. djStyled(true);
  26. if(!fexist("Deaths.cfg")) djCreateFile("Deaths.cfg");
  27. if(!fexist("Kills.cfg")) djCreateFile("Kills.cfg");
  28. TextDraw0 = TextDrawCreate(46.000000,254.000000,"Top 5 list");
  29. TextDraw1 = TextDrawCreate(45.000000,274.000000,"1.name 111 Shooter");
  30. TextDraw2 = TextDrawCreate(41.000000,286.000000,"2.name 111 Shooter");
  31. TextDraw3 = TextDrawCreate(40.000000,299.000000,"3.name 111 Shooter");
  32. TextDraw4 = TextDrawCreate(40.000000,311.000000,"4.name 111 Shooter");
  33. TextDraw5 = TextDrawCreate(40.000000,322.000000,"5.name 111 Shooter");
  34. TextDrawAlignment(TextDraw0,0);
  35. TextDrawAlignment(TextDraw1,0);
  36. TextDrawAlignment(TextDraw2,0);
  37. TextDrawAlignment(TextDraw3,0);
  38. TextDrawAlignment(TextDraw4,0);
  39. TextDrawAlignment(TextDraw5,0);
  40. TextDrawBackgroundColor(TextDraw0,0x000000ff);
  41. TextDrawBackgroundColor(TextDraw1,0x000000ff);
  42. TextDrawBackgroundColor(TextDraw2,0x000000ff);
  43. TextDrawBackgroundColor(TextDraw3,0x000000ff);
  44. TextDrawBackgroundColor(TextDraw4,0x000000ff);
  45. TextDrawBackgroundColor(TextDraw5,0x000000ff);
  46. TextDrawFont(TextDraw0,1);
  47. TextDrawLetterSize(TextDraw0,0.499999,1.000000);
  48. TextDrawFont(TextDraw1,1);
  49. TextDrawLetterSize(TextDraw1,0.299999,1.000000);
  50. TextDrawFont(TextDraw2,1);
  51. TextDrawLetterSize(TextDraw2,0.299999,1.000000);
  52. TextDrawFont(TextDraw3,1);
  53. TextDrawLetterSize(TextDraw3,0.299999,1.000000);
  54. TextDrawFont(TextDraw4,1);
  55. TextDrawLetterSize(TextDraw4,0.299999,1.000000);
  56. TextDrawFont(TextDraw5,1);
  57. TextDrawLetterSize(TextDraw5,0.299999,1.000000);
  58. TextDrawColor(TextDraw0,0xff0000cc);
  59. TextDrawColor(TextDraw1,0xffffffff);
  60. TextDrawColor(TextDraw2,0xffffffff);
  61. TextDrawColor(TextDraw3,0xffffffff);
  62. TextDrawColor(TextDraw4,0xffffffff);
  63. TextDrawColor(TextDraw5,0xffffffff);
  64. TextDrawSetOutline(TextDraw0,1);
  65. TextDrawSetOutline(TextDraw1,1);
  66. TextDrawSetOutline(TextDraw2,1);
  67. TextDrawSetOutline(TextDraw3,1);
  68. TextDrawSetOutline(TextDraw4,1);
  69. TextDrawSetOutline(TextDraw5,1);
  70. TextDrawSetProportional(TextDraw0,1);
  71. TextDrawSetProportional(TextDraw1,1);
  72. TextDrawSetProportional(TextDraw2,1);
  73. TextDrawSetProportional(TextDraw3,1);
  74. TextDrawSetProportional(TextDraw4,1);
  75. TextDrawSetProportional(TextDraw5,1);
  76. TextDrawSetShadow(TextDraw0,1);
  77. TextDrawSetShadow(TextDraw1,1);
  78. TextDrawSetShadow(TextDraw2,1);
  79. TextDrawSetShadow(TextDraw3,1);
  80. TextDrawSetShadow(TextDraw4,1);
  81. TextDrawSetShadow(TextDraw5,1);
  82. TextDrawShowForAll(TextDraw0);
  83. TextDrawShowForAll(TextDraw1);
  84. TextDrawShowForAll(TextDraw2);
  85. TextDrawShowForAll(TextDraw3);
  86. TextDrawShowForAll(TextDraw4);
  87. TextDrawShowForAll(TextDraw5);
  88. ploop(i)
  89. {
  90. GetPlayerName(i, PlayerName[i], MAX_PLAYER_NAME);
  91. TextDrawShowForPlayer(i, Stats[i]);
  92. TextDrawShowForPlayer(i, R_1[i]);
  93. }
  94. UpdateTopList();
  95. print("** Rank system loaded - Rebuild by Kwarde");
  96. return 1;
  97. }
  98.  
  99. public OnFilterScriptExit()
  100. {
  101. djson_GameModeExit();
  102. TextDrawDestroy(TextDraw0);
  103. TextDrawDestroy(TextDraw1);
  104. TextDrawDestroy(TextDraw2);
  105. TextDrawDestroy(TextDraw3);
  106. TextDrawDestroy(TextDraw4);
  107. TextDrawDestroy(TextDraw5);
  108. for(new i = 0; i < MAX_SLOTS; i++)
  109. {
  110. TextDrawDestroy(R_1[i]);
  111. TextDrawDestroy(Stats[i]);
  112. }
  113. print("** Rank system unloaded - Rebuild by Kwarde");
  114. return 1;
  115. }
  116.  
  117. public OnPlayerRequestClass(playerid, classid)
  118. {
  119. SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746);
  120. SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746);
  121. SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746);
  122. return 1;
  123. }
  124.  
  125. public OnPlayerConnect(playerid)
  126. {
  127. new str[128];
  128. GetPlayerName(playerid, PlayerName[playerid], MAX_PLAYER_NAME);
  129. Deaths[playerid] = djInt("Deaths.cfg", PlayerName[playerid]);
  130. Kills[playerid] = djInt("Kills.cfg", PlayerName[playerid]);
  131. format(str, 128, "-> Welcome to the server %s! Enjoy your stay here.", PlayerName[playerid]);
  132. SendClientMessage(playerid, COLOR_YELLOW, str);
  133. SendClientMessage(playerid, COLOR_GRAY, "** This sserver is using a rank system, which is rebuild by Kwarde");
  134. R_1[playerid] = TextDrawCreate(498.000000, 100.000000, " ");
  135. TextDrawBackgroundColor(R_1[playerid], 255);
  136. TextDrawFont(R_1[playerid], 2);
  137. TextDrawLetterSize(R_1[playerid], 0.250000, 0.899999);
  138. TextDrawColor(R_1[playerid], -1);
  139. TextDrawSetOutline(R_1[playerid], 0);
  140. TextDrawSetProportional(R_1[playerid], 1);
  141. TextDrawSetShadow(R_1[playerid], 1);
  142. Stats[playerid] = TextDrawCreate(499.000000, 110.000000, "~r~Kills: ~w~0 ~g~Deaths: ~w~0");
  143. TextDrawBackgroundColor(Stats[playerid], 255);
  144. TextDrawFont(Stats[playerid], 2);
  145. TextDrawLetterSize(Stats[playerid], 0.159999, 1.000000);
  146. TextDrawColor(Stats[playerid], -1);
  147. TextDrawSetOutline(Stats[playerid], 0);
  148. TextDrawSetProportional(Stats[playerid], 1);
  149. TextDrawSetShadow(Stats[playerid], 1);
  150. return 1;
  151. }
  152.  
  153. public OnPlayerDisconnect(playerid)
  154. {
  155. djSetInt("Deaths.cfg", PlayerName[playerid], Deaths[playerid]);
  156. djSetInt("Kills.cfg", PlayerName[playerid], Kills[playerid]);
  157. TextDrawDestroy(R_1[playerid]);
  158. TextDrawDestroy(Stats[playerid]);
  159. UpdateTopList();
  160. return 1;
  161. }
  162.  
  163. public OnPlayerSpawn(playerid)
  164. {
  165. TextDrawShowForPlayer(playerid, TextDraw0);
  166. TextDrawShowForPlayer(playerid, TextDraw1);
  167. TextDrawShowForPlayer(playerid, TextDraw2);
  168. TextDrawShowForPlayer(playerid, TextDraw3);
  169. TextDrawShowForPlayer(playerid, TextDraw4);
  170. TextDrawShowForPlayer(playerid, TextDraw5);
  171. TextDrawShowForPlayer(playerid, Stats[playerid]);
  172. TextDrawShowForPlayer(playerid, R_1[playerid]);
  173. return 1;
  174. }
  175.  
  176. public OnPlayerDeath(playerid, killerid, reason)
  177. {
  178. if(killerid != INVALID_PLAYER_ID)
  179. {
  180. Kills[killerid]++;
  181. djSetInt("Kills.cfg", PlayerName[killerid], Kills[killerid]);
  182. }
  183. Deaths[playerid]++;
  184. djSetInt("Deaths.cfg", PlayerName[playerid], Deaths[playerid]);
  185. TextDrawHideForPlayer(playerid, TextDraw0);
  186. TextDrawHideForPlayer(playerid, TextDraw1);
  187. TextDrawHideForPlayer(playerid, TextDraw2);
  188. TextDrawHideForPlayer(playerid, TextDraw3);
  189. TextDrawHideForPlayer(playerid, TextDraw4);
  190. TextDrawHideForPlayer(playerid, TextDraw5);
  191. TextDrawHideForPlayer(playerid, Stats[playerid]);
  192. TextDrawHideForPlayer(playerid, R_1[playerid]);
  193. UpdateTopList();
  194. return 1;
  195. }
  196.  
  197. public OnPlayerUpdate(playerid)
  198. {
  199. new str[128];
  200. format(str, 128, "~g~Kills: ~w~%d ~r~Deaths: ~w~%d", Kills[playerid], Deaths[playerid]);
  201. TextDrawSetString(Stats[playerid], str);
  202. format(str, 128, "~r~RANK: ~w~%s", GetPlayerRank(playerid));
  203. TextDrawSetString(R_1[playerid], str);
  204. return 1;
  205. }
  206.  
  207. stock GetPlayerRank(playerid)
  208. {
  209. new str[30], k = Kills[playerid];
  210. if(k >= 0 && k <= 10) format(str, 30, "Newbie shooter");
  211. else if(k >= 11 && k <= 25) format(str, 30, "Killer shooter");
  212. else if(k >= 26 && k <= 75) format(str, 30, "Master shooter");
  213. else if(k >= 76 && k <= 150) format(str, 30, "Pro shooter");
  214. else if(k >= 151 && k <= 300) format(str, 30, "Striker shooter");
  215. else if(k >= 301 && k <= 450) format(str, 30, "Freekill shooter");
  216. else if(k >= 451 && k <= 675) format(str, 30, "Psycho shooter");
  217. else if(k >= 676 && k <= 1000) format(str, 30, "Fatal shooter");
  218. else if(k >= 1001 && k <= 1500) format(str, 30, "Havoc shooter");
  219. else if(k >= 1501 && k <= 2250) format(str, 30, "Extreme shooter");
  220. else if(k >= 2251 && k <= 5100) format(str, 30, "Wild shooter");
  221. else if(k >= 5101 && k <= 7650) format(str, 30, "Hazardous shooter");
  222. else if(k <= 7651 && k <= 11475) format(str, 30, "IGI Shooter");
  223. else if(k <= 11476 && k <= 17500) format(str, 30, "Tactical shooter");
  224. else if(k >= 17501 && k <= 26250) format(str, 30, "Deticated shooter");
  225. else if(k >= 26251 && k <= 39375) format(str, 30, "Insane shooter");
  226. else if(k >= 39376 && k <= 60000) format(str, 30, "The real shooter");
  227. else if(k >= 60001 && k <= 100000) format(str, 30, "Professional shooter");
  228. else format(str, 30, "Rockstar shooter");
  229. return str;
  230. }
  231.  
  232. stock UpdateTopList()
  233. {
  234. new
  235. LastHighestScore = cellmin,
  236. LastID = INVALID_PLAYER_ID,
  237. TopList[5],
  238. str[5][128]
  239. ;
  240. ploop(i)
  241. {
  242. if(Kills[i] > LastHighestScore)
  243. {
  244. LastHighestScore = Kills[i];
  245. LastID = i;
  246. }
  247. }
  248. TopList[0] = LastID;
  249. LastHighestScore = cellmin;
  250. LastID = INVALID_PLAYER_ID;
  251. ploop(i)
  252. {
  253. if(i == TopList[0]) continue;
  254. if(Kills[i] > LastHighestScore)
  255. {
  256. LastHighestScore = Kills[i];
  257. LastID = i;
  258. }
  259. }
  260. TopList[1] = LastID;
  261. LastHighestScore = cellmin;
  262. LastID = INVALID_PLAYER_ID;
  263. ploop(i)
  264. {
  265. if(i == TopList[0] || i == TopList[1]) continue;
  266. if(Kills[i] > LastHighestScore)
  267. {
  268. LastHighestScore = Kills[i];
  269. LastID = i;
  270. }
  271. }
  272. TopList[2] = LastID;
  273. LastHighestScore = cellmin;
  274. LastID = INVALID_PLAYER_ID;
  275. ploop(i)
  276. {
  277. if(i == TopList[0] || i == TopList[1] || i == TopList[2]) continue;
  278. if(Kills[i] > LastHighestScore)
  279. {
  280. LastHighestScore = Kills[i];
  281. LastID = i;
  282. }
  283. }
  284. TopList[3] = LastID;
  285. LastHighestScore = cellmin;
  286. LastID = INVALID_PLAYER_ID;
  287. ploop(i)
  288. {
  289. if(i == TopList[0] || i == TopList[1] || i == TopList[2] || i == TopList[3]) continue;
  290. if(Kills[i] > LastHighestScore)
  291. {
  292. LastHighestScore = Kills[i];
  293. LastID = i;
  294. }
  295. }
  296. TopList[4] = LastID;
  297.  
  298. for(new i = 0; i < 5; i++)
  299. {
  300. if(TopList[i] == INVALID_PLAYER_ID)
  301. format(str[i], 128, "~g~%d. ~w~None None None", i + 1);
  302. else format(str[i], 128, "~g~%d. ~w~%s %d %s", i + 1, PlayerName[TopList[i]], Kills[TopList[i]], GetPlayerRank(TopList[i]));
  303. }
  304. TextDrawSetString(TextDraw1, str[0]);
  305. TextDrawSetString(TextDraw2, str[1]);
  306. TextDrawSetString(TextDraw3, str[2]);
  307. TextDrawSetString(TextDraw4, str[3]);
  308. TextDrawSetString(TextDraw5, str[4]);
  309. return 1;
  310. }
  311.  
  312. CMD:rank(playerid, params[])
  313. {
  314. new str[128], id;
  315. if(isnull(params)) return SendClientMessage(playerid, COLOR_WHITE, "USAGE: /rank [playerid]");
  316. id = strval(params);
  317. if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_GRAY, "* That player isn't connected!");
  318. format(str, 128, "{00FF00}%s's current rank: {FFFFFF}%s", PlayerName[id], GetPlayerRank(id));
  319. SendClientMessage(playerid, COLOR_WHITE, str);
  320. format(str, 128, " Kills: %d || Deaths: %d", Kills[id], Deaths[id]);
  321. SendClientMessage(playerid, COLOR_GREEN, str);
  322. return 1;
  323. }
  324.  
  325. CMD:mykills(playerid, params[]) return Kills[playerid] = strval(params);
  326.  
  327. CMD:updatetl(playerid, params[]) return UpdateTopList();
  328.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement