Advertisement
Guest User

Spree System V1.0 - WORKING

a guest
Aug 5th, 2013
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 3.49 KB | None | 0 0
  1. #include <a_samp>
  2. forward CheckForSpree();
  3. new PKills[MAX_PLAYERS+1];
  4. new SpreeP = -1;
  5. new Text:NameSpree;
  6. new Text:SpreeNumb;
  7. stock PName(playerid)
  8. {
  9.     new name[MAX_PLAYER_NAME];
  10.     GetPlayerName(playerid, name, sizeof(name));
  11.     return name;
  12. }
  13. stock RemoveSpree(playerid)
  14. {
  15.     SpreeP = -1;
  16.     PKills[playerid] = 0;
  17.     new Higher=-1;
  18.     new PHigher=-1;
  19.     new i=0;
  20.     while(i < MAX_PLAYERS)
  21.     {
  22.         if(PKills[i] > Higher)
  23.         {
  24.             Higher = PKills[i];
  25.             PHigher = i;
  26.         }
  27.         i++;
  28.     }
  29.     if(Higher <= 0) SpreeP = -1;
  30.     else
  31.     {
  32.         Higher = 0;
  33.         SpreeP = PHigher;
  34.     }
  35.     return 1;
  36. }
  37. IsNumeric(const string[])
  38. {
  39.     new i;
  40.     while(string[i] != '\0')
  41.     {
  42.         if (string[i] > '9' || string[i] < '0'){return 0;}
  43.         i++;
  44.     }
  45.     return 1;
  46. }
  47. strtok(const string[], &index)
  48. {
  49.     new length = strlen(string);
  50.     while ((index < length) && (string[index] <= ' '))
  51.     {
  52.         index++;
  53.     }
  54.  
  55.     new offset = index;
  56.     new result[20];
  57.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  58.     {
  59.         result[index - offset] = string[index];
  60.         index++;
  61.     }
  62.     result[index - offset] = EOS;
  63.     return result;
  64. }
  65. public OnFilterScriptInit()
  66. {
  67.     NameSpree = TextDrawCreate(628.000000, 391.000000, "~b~~h~PlayerName~w~~h~ is on a spree");
  68.     TextDrawAlignment(NameSpree, 3);
  69.     TextDrawBackgroundColor(NameSpree, 255);
  70.     TextDrawFont(NameSpree, 1);
  71.     TextDrawLetterSize(NameSpree, 0.500000, 2.099999);
  72.     TextDrawColor(NameSpree, -1);
  73.     TextDrawSetOutline(NameSpree, 0);
  74.     TextDrawSetProportional(NameSpree, 1);
  75.     TextDrawSetShadow(NameSpree, 1);
  76.     SpreeNumb = TextDrawCreate(627.000000, 411.000000, "~r~~h~Number of Kills~w~~h~ in a row");
  77.     TextDrawAlignment(SpreeNumb, 3);
  78.     TextDrawBackgroundColor(SpreeNumb, 255);
  79.     TextDrawFont(SpreeNumb, 1);
  80.     TextDrawLetterSize(SpreeNumb, 0.519999, 2.099999);
  81.     TextDrawColor(SpreeNumb, -1);
  82.     TextDrawSetOutline(SpreeNumb, 0);
  83.     TextDrawSetProportional(SpreeNumb, 1);
  84.     TextDrawSetShadow(SpreeNumb, 1);
  85.     SetTimer("CheckForSpree", 1000, true);
  86. }
  87. public OnPlayerDeath(playerid, killerid, reason)
  88. {
  89.     PKills[killerid]++;
  90.     PKills[playerid] = 0;
  91.     if(SpreeP != -1){if(PKills[killerid] > PKills[SpreeP]) SpreeP = killerid;}
  92.     else
  93.     {
  94.         SpreeP = killerid;
  95.     }
  96.     if(playerid == SpreeP)
  97.     {
  98.         RemoveSpree(playerid);
  99.     }
  100.     return 1;
  101. }
  102. public OnPlayerDisconnect(playerid, reason)
  103. {
  104.     if(playerid == SpreeP)
  105.     {
  106.         RemoveSpree(playerid);
  107.     }
  108. }
  109. public CheckForSpree()
  110. {
  111.     new FormA[128], FormB[128];
  112.     if(SpreeP != -1)
  113.     {
  114.         format(FormA, sizeof(FormA), "~b~~h~%s~w~~h~ is on a spree", PName(SpreeP));
  115.         format(FormB, sizeof(FormB), "~r~~h~%i kills~w~~h~ in a row", PKills[SpreeP]);
  116.         TextDrawSetString(NameSpree, FormA);
  117.         TextDrawSetString(SpreeNumb, FormB);
  118.         TextDrawShowForAll(NameSpree);
  119.         TextDrawShowForAll(SpreeNumb);
  120.     }
  121.     else
  122.     {
  123.         TextDrawHideForAll(NameSpree);
  124.         TextDrawHideForAll(SpreeNumb);
  125.     }
  126.     return 1;
  127. }
  128. public OnPlayerCommandText(playerid, cmdtext[])
  129. {
  130.     new cmd[128], idx;
  131.     cmd = strtok(cmdtext, idx);
  132.     if(!strcmp(cmd, "/rmvspree", true))
  133.     {
  134.         if(!IsPlayerAdmin(playerid)) return 0;
  135.         new tmp[128];
  136.         tmp = strtok(cmdtext, idx);
  137.         new PID = strval(tmp);
  138.         if(!IsPlayerConnected(PID) || !IsNumeric(tmp) || !strlen(tmp)) return SendClientMessage(playerid, 0xFF0000FF, "Invalid input");
  139.         RemoveSpree(PID);
  140.         SendClientMessage(playerid, 0x00FF00FF, "Spree sucessfully removed!");
  141.         SendClientMessage(PID, 0xFF00FFFF, "A Admin has removed your spree!");
  142.         return 1;
  143.     }
  144.     return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement