Advertisement
Kwarde

Top5List

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