Advertisement
Kwarde

Top 5 Player List

Apr 23rd, 2011
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.90 KB | None | 0 0
  1. #include <a_samp>
  2. #include <sscanf2>
  3. #include <zcmd>
  4.  
  5. #undef MAX_PLAYERS
  6. #define MAX_PLAYERS     500 //Change it if you want. Not necesarry but reccomended.
  7.  
  8. #define COLOR_WHITE     0xFFFFFFAA
  9. #define COLOR_GREEN     0x00FF00AA
  10. #define COLOR_YELLOW    0xFFFF00AA
  11. #define COLOR_GRAY      0xAFAFAFAA
  12.  
  13. new Text:Top5ScoreTD,
  14.     Top5[5][2], bool:pSeeList[MAX_PLAYERS]
  15. ;
  16.  
  17. public OnFilterScriptInit()
  18. {
  19.     Top5ScoreTD = TextDrawCreate(205.000000, 116.000000, "~r~Unknown");
  20.     TextDrawBackgroundColor(Top5ScoreTD, 255);
  21.     TextDrawFont(Top5ScoreTD, 1);
  22.     TextDrawLetterSize(Top5ScoreTD, 0.740000, 2.000000);
  23.     TextDrawColor(Top5ScoreTD, -1);
  24.     TextDrawSetOutline(Top5ScoreTD, 1);
  25.     TextDrawSetProportional(Top5ScoreTD, 1);
  26.     TextDrawUseBox(Top5ScoreTD, 1);
  27.     TextDrawBoxColor(Top5ScoreTD, 255);
  28.     TextDrawTextSize(Top5ScoreTD, 563.000000, 9.000000);
  29.     return 1;
  30. }
  31.  
  32. public OnFilterScriptExit()
  33. {
  34.     TextDrawHideForAll(Top5ScoreTD); //Does it make sense? - No, it probably doesn't.
  35.     TextDrawDestroy(Top5ScoreTD);
  36.     return 1;
  37. }
  38.  
  39. public OnPlayerSpawn(playerid)
  40. {
  41.     if(pSeeList[playerid]){
  42.         TextDrawShowForPlayer(playerid, Top5ScoreTD);
  43.         SendClientMessage(playerid, COLOR_WHITE, "NOTE: Press with the FIRE_KEY to disable the box");
  44.     }
  45.     return 1;
  46. }
  47.  
  48. public OnPlayerConnect(playerid)
  49. {
  50.     pSeeList[playerid] = false;
  51.     TextDrawHideForPlayer(playerid, Top5ScoreTD); //Probably not needed :')
  52.     return 1;
  53. }
  54.  
  55. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  56. {
  57.     if((newkeys & KEY_FIRE) && pSeeList[playerid])
  58.         HideList(playerid);
  59.     return 1;
  60. }
  61.  
  62. stock PlayerName(playerid)
  63. {
  64.     static pName[MAX_PLAYER_NAME];
  65.     GetPlayerName(playerid, pName, MAX_PLAYER_NAME);
  66.     return pName;
  67. }
  68.  
  69. stock GetP1()
  70. {
  71.     new HighestScore = cellmin, LastHighest = INVALID_PLAYER_ID;
  72.     for(new i = 0; i < MAX_PLAYERS; i++)
  73.     {
  74.         if(!IsPlayerConnected(i)) continue;
  75.         if(GetPlayerScore(i) > HighestScore){
  76.             HighestScore = GetPlayerScore(i);
  77.             LastHighest = i;
  78.         }
  79.     }
  80.     return Top5[0][0] = LastHighest, Top5[0][1] = HighestScore;
  81. }
  82.  
  83. stock GetP2()
  84. {
  85.     new HighestScore = cellmin, LastHighest = INVALID_PLAYER_ID;
  86.     for(new i = 0; i < MAX_PLAYERS; i++)
  87.     {
  88.         if(!IsPlayerConnected(i)) continue;
  89.         if((GetPlayerScore(i) > HighestScore) && (GetPlayerScore(i) < Top5[0][1])){
  90.             HighestScore = GetPlayerScore(i);
  91.             LastHighest = i;
  92.         }
  93.     }
  94.     return Top5[1][0] = LastHighest, Top5[1][1] = HighestScore;
  95. }
  96.  
  97. stock GetP3()
  98. {
  99.     new HighestScore = cellmin, LastHighest = INVALID_PLAYER_ID;
  100.     for(new i = 0; i < MAX_PLAYERS; i++)
  101.     {
  102.         if(!IsPlayerConnected(i)) continue;
  103.         if((GetPlayerScore(i) > HighestScore) && (GetPlayerScore(i) < Top5[1][1])){
  104.             HighestScore = GetPlayerScore(i);
  105.             LastHighest = i;
  106.         }
  107.     }
  108.     return Top5[2][0] = LastHighest, Top5[2][1] = HighestScore;
  109. }
  110.  
  111. stock GetP4()
  112. {
  113.     new HighestScore = cellmin, LastHighest = INVALID_PLAYER_ID;
  114.     for(new i = 0; i < MAX_PLAYERS; i++)
  115.     {
  116.         if(!IsPlayerConnected(i)) continue;
  117.         if((GetPlayerScore(i) > HighestScore) && (GetPlayerScore(i) < Top5[2][1])){
  118.             HighestScore = GetPlayerScore(i);
  119.             LastHighest = i;
  120.         }
  121.     }
  122.     return Top5[3][0] = LastHighest, Top5[3][1] = HighestScore;
  123. }
  124.  
  125. stock GetP5()
  126. {
  127.     new HighestScore = cellmin, LastHighest = INVALID_PLAYER_ID;
  128.     for(new i = 0; i < MAX_PLAYERS; i++)
  129.     {
  130.         if(!IsPlayerConnected(i)) continue;
  131.         if((GetPlayerScore(i) > HighestScore) && (GetPlayerScore(i) < Top5[3][1])){
  132.             HighestScore = GetPlayerScore(i);
  133.             LastHighest = i;
  134.         }
  135.     }
  136.     return Top5[4][0] = LastHighest, Top5[4][1] = HighestScore;
  137. }
  138.  
  139. stock GetScores()
  140. {
  141.     GetP1();
  142.     GetP2();
  143.     GetP3();
  144.     GetP4();
  145.     GetP5();
  146.     return 1;
  147. }
  148.  
  149. stock ShowList(playerid)
  150. {
  151.     pSeeList[playerid] = true;
  152.     TextDrawShowForPlayer(playerid, Top5ScoreTD);
  153.     return 1;
  154. }
  155.  
  156. stock HideList(playerid)
  157. {
  158.     pSeeList[playerid] = false;
  159.     TextDrawHideForPlayer(playerid, Top5ScoreTD);
  160.     return 1;
  161. }
  162.  
  163. stock ShowAllList()
  164.     for(new i = 0; i < MAX_PLAYERS; i++) ShowList(i);
  165.  
  166. stock HideAllList()
  167.     for(new i = 0; i < MAX_PLAYERS; i++) ShowList(i);
  168.  
  169. CMD:kt5help(playerid, params[])
  170. {
  171.     if(!IsPlayerAdmin(playerid)) return 0;
  172.     SendClientMessage(playerid, COLOR_YELLOW, "[----- Top5 Players - By Kwarde -----]");
  173.     SendClientMessage(playerid, COLOR_WHITE, "** Update status: /kt5update || ** Show top5 list to all: /kt5show");
  174.     SendClientMessage(playerid, COLOR_WHITE, "** Show top5 list to one person: /kt5show [playerid]");
  175.     SendClientMessage(playerid, COLOR_WHITE, "** To hide for all or playerid: /kt5hide ([playerid])");
  176.     SendClientMessage(playerid, COLOR_YELLOW, "[------ END ------]");
  177.     return 1;
  178. }
  179.  
  180. CMD:kt5update(playerid, params[])
  181. {
  182.     new str[230];
  183.     if(!IsPlayerAdmin(playerid)) return 0;
  184.     GetScores();
  185.     format(str, 230, "~b~Top 5 player scores:~w~~n~~n~%s: %d~n~%s: %d~n~%s: %d~n~%s: %d~n~%s: %d~n~", PlayerName(Top5[0][0]), Top5[0][1], PlayerName(Top5[1][0]), Top5[1][1], PlayerName(Top5[2][0]), Top5[2][1], PlayerName(Top5[3][0]), Top5[3][1], PlayerName(Top5[4][0]), Top5[4][1]);
  186.     TextDrawSetString(Top5ScoreTD, str);
  187.     SendClientMessage(playerid, COLOR_GREEN, "** List has been updated!");
  188.     return 1;
  189. }
  190.  
  191. CMD:kt5show(playerid, params[])
  192. {
  193.     new bool:All, ID;
  194.     if(!IsPlayerAdmin(playerid)) return 0;
  195.     if(sscanf(params, "d", ID)){
  196.         All = false;
  197.         SendClientMessage(playerid, COLOR_WHITE, "NOTE: You can also use /kt5show [playerid]");
  198.     }
  199.     else All = true;
  200.     if(All){
  201.         ShowAllList();
  202.         SendClientMessageToAll(COLOR_GREEN, "* A RCON administrator has just showed the top 5 score list");
  203.         SendClientMessageToAll(COLOR_WHITE, "NOTE: Press with the FIRE_KEY to disable the box");
  204.     }
  205.     else{
  206.         if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, COLOR_GRAY, "** Player is not connected!");
  207.         ShowList(ID);
  208.         SendClientMessage(playerid, COLOR_GREEN, "* Player does now see the top 5 score list");
  209.         SendClientMessage(ID, COLOR_GREEN, "* A RCON administrator has shown you the top 5 players");
  210.         SendClientMessage(ID, COLOR_WHITE, "NOTE: Press with the FIRE_KEY to disable the box");
  211.     }
  212.     return 1;
  213. }
  214.  
  215. CMD:kt5hide(playerid, params[])
  216. {
  217.     new bool:All, ID;
  218.     if(!IsPlayerAdmin(playerid)) return 0;
  219.     if(sscanf(params, "d", ID)){
  220.         All = false;
  221.         SendClientMessage(playerid, COLOR_WHITE, "NOTE: You can also use /kt5hide [playerid]");
  222.     }
  223.     else All = true;
  224.     if(All){
  225.         HideAllList();
  226.         SendClientMessageToAll(COLOR_GREEN, "* A RCON administrator has just hidden the top 5 score list");
  227.     }
  228.     else{
  229.         if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, COLOR_GRAY, "** Player is not connected!");
  230.         HideList(ID);
  231.         SendClientMessage(playerid, COLOR_GREEN, "* Player does not see anymore the top 5 score list");
  232.         SendClientMessage(ID, COLOR_GREEN, "* A RCON administrator has hide the top 5 players for you");
  233.     }
  234.     return 1;
  235. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement