Advertisement
Guest User

Skiaffo

a guest
Feb 4th, 2010
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 11.68 KB | None | 0 0
  1. //----------------------------------------------------------------------------//
  2.  
  3. #include <a_samp>
  4. #define colore 0xFFFF22AA
  5.  
  6. //----------------------------------------------------------------------------//
  7.  
  8. new bottino = 50000; // Bottino della rapina, modificabile
  9. new temporapina = 900000; // Tempo della rapina in millisecondi, modificabile (default = 900000 millisecondi)
  10. new rapinaincorso = 0; // NON MODIFICARE
  11. new israpinatore[MAX_PLAYERS]; // NON MODIFICARE
  12. new rapinatimer[MAX_PLAYERS]; // NON MODIFICARE
  13. new polcount; // NON MODIFICARE
  14. new copsminimi = 1; // Numero minimo di poliziotti connessi nel server per poter rapinare la banca, modificabile
  15. new bloccorapina = 0; // NON MODIFICARE
  16. new tempobloccorap = 3600000; // Tempo di attesa prima di fare un'altra rapina in millisecondi, modificabile (default = 3600000 millisecondi)
  17. // Conversione millisecondi -> minuti:
  18. // 3600000 = 1 ora // 2700000 = 45 minuti // 1800000 = 30 minuti // 900000 = 15 minuti
  19.  
  20. forward IsPolice(playerid);
  21. forward IsInBank(playerid);
  22. forward IsArmed(playerid);
  23. forward RapinaTime(playerid);
  24. forward BankAreaCheck();
  25. forward CopsConnected();
  26. forward RapinaOn();
  27.  
  28. //----------------------------------------------------------------------------//
  29.  
  30. public IsInBank(playerid) {
  31.     new Float:px;
  32.     new Float:py;
  33.     new Float:pz;
  34.     GetPlayerPos(playerid, px, py, pz);
  35.     // Coordinate che delimitano il cubo in cui è contenuto l'interior della banca
  36.     // Modificate a vostro rischio!
  37.     if ((px > 2304.2651) && (px < 2320.9858) && (py > -17.9669) && (py < 0.9919) && (pz < 29.0) && (pz > 26.5)) {
  38.         return 1;
  39.     }
  40.     return 0;
  41. }
  42.  
  43. public IsPolice(playerid) {
  44.     new pskin = GetPlayerSkin(playerid);
  45.     // Skins dei poliziotti, cambiate, togliete o aggiungete SkinID se necessario
  46.     if ((pskin == 266) || (pskin == 265) || (pskin == 267) || (pskin == 71) || (pskin == 163) || (pskin == 246) || (pskin == 166) || (pskin == 165) || (pskin == 164) || (pskin == 280) || (pskin == 281) || (pskin == 282) || (pskin == 283) || (pskin == 284) || (pskin == 285) || (pskin == 286) || (pskin == 287) || (pskin == 288)) {
  47.         return 1;
  48.     }
  49.     return 0;
  50. }
  51.  
  52. public IsArmed(playerid) {
  53.     new arma = GetPlayerWeapon(playerid);
  54.     if ((arma > 18) && (arma < 39)) {
  55.         return 1;
  56.     }
  57.     return 0;
  58. }
  59.  
  60. public CopsConnected() {
  61.     for (new i=0; i<MAX_PLAYERS; i++) {
  62.         if (IsPlayerConnected(i)) {
  63.             if (IsPolice(i) == 1) {
  64.                 polcount ++;
  65.                 return polcount;
  66.             }
  67.         }
  68.     }
  69.     return 0;
  70. }
  71.  
  72. public RapinaOn() {
  73.     bloccorapina = 0;
  74. }
  75.  
  76. public RapinaTime(playerid) {
  77.     new string[256];
  78.     new polstring[256];
  79.     new pname[MAX_PLAYER_NAME];
  80.     GetPlayerName(playerid, pname, sizeof(pname));
  81.     format(string, sizeof(string),"%s ha rapinato con successo la banca, e porta a casa ben %d$ !", pname, bottino);
  82.     SendClientMessageToAll(colore, string);
  83.     GivePlayerMoney(playerid, bottino);
  84.     KillTimer(rapinatimer[playerid]);
  85.     israpinatore[playerid] = 0;
  86.     rapinaincorso = 0;
  87.     for (new i=0; i<MAX_PLAYERS; i++) {
  88.         if (IsPlayerConnected(i)) {
  89.             if (IsPolice(i) == 1) {
  90.                 format(polstring, sizeof(polstring),"Hai fallito nell'impedire a %s di fare la rapina!", pname);
  91.                 SendClientMessage(i, colore, polstring);
  92.             }
  93.         }
  94.     }
  95.     return 1;
  96. }
  97.  
  98. public BankAreaCheck() {
  99.     for (new i=0; i<MAX_PLAYERS; i++) {
  100.         if (IsPlayerConnected(i)) {
  101.             if (israpinatore[i] == 1) {
  102.                 if (IsInBank(i) == 1) {
  103.                 } else {
  104.                     new polstring[256];
  105.                     new rapinatore[MAX_PLAYER_NAME];
  106.                     GetPlayerName(i, rapinatore, sizeof(rapinatore));
  107.                     israpinatore[i] = 0;
  108.                     KillTimer(rapinatimer[i]);
  109.                     rapinaincorso = 0;
  110.                     SendClientMessage(i, colore, "Sei uscito dalla banca e hai fallito la rapina!");
  111.                     for (new pi=0; pi<MAX_PLAYERS; pi++) {
  112.                         if (IsPlayerConnected(pi)) {
  113.                             if (IsPolice(pi) == 1) {
  114.                                 format(polstring, sizeof(polstring),"%s è uscito dalla banca e ha smesso di rapinare", rapinatore);
  115.                                 SendClientMessage(pi, colore, polstring);
  116.                             }
  117.                         }
  118.                     }
  119.                 }
  120.             }
  121.         }
  122.     }
  123.     return 1;
  124. }
  125.  
  126. //----------------------------------------------------------------------------//
  127.  
  128. public OnFilterScriptInit() {
  129.     print("\n--FS Rapina By Skiaffo Caricato.\n");
  130.     SetTimer("BankAreaCheck", 500, 1);
  131.     bloccorapina = 0;
  132.     rapinaincorso = 0;
  133.     return 1;
  134. }
  135.  
  136. //----------------------------------------------------------------------------//
  137.  
  138. public OnPlayerConnect(playerid) {
  139.     israpinatore[playerid] = 0; // NON MODIFICARE
  140.     return 1;
  141. }
  142.  
  143. //----------------------------------------------------------------------------//
  144.  
  145. public OnPlayerCommandText(playerid, cmdtext[]) {
  146.  
  147.     new cmd[256];
  148.     new idx;
  149.     cmd = strtok(cmdtext, idx);
  150.    
  151.     if (strcmp(cmd, "/rapina", true) == 0) {
  152.         if (IsPolice(playerid) == 0) {
  153.             if (IsInBank(playerid) == 1) {
  154.                 if (bloccorapina == 0) {
  155.                     if (israpinatore[playerid] == 0) {
  156.                         if (CopsConnected() >= copsminimi) {
  157.                             if (IsArmed(playerid) == 1) {
  158.                                 rapinatimer[playerid] = SetTimerEx("RapinaTime", temporapina, 0, "i", playerid);
  159.                                 israpinatore[playerid] = 1;
  160.                                 rapinaincorso = 1;
  161.                                 bloccorapina = 1;
  162.                                 SetTimer("RapinaOn", tempobloccorap, 0);
  163.                                 new string[256];
  164.                                 new polstring[256];
  165.                                 new rapstring[256];
  166.                                 new rapinatore[MAX_PLAYER_NAME];
  167.                                 GetPlayerName(playerid, rapinatore, sizeof(rapinatore));
  168.                                 for (new i=0; i<MAX_PLAYERS; i++) {
  169.                                     if (IsPlayerConnected(i)) {
  170.                                         if (IsPolice(i) == 1) {
  171.                                             format(polstring, sizeof(polstring),"Attenzione! %s sta rapinando la banca!", rapinatore);
  172.                                             SendClientMessage(i, colore, polstring);
  173.                                         }
  174.                                     }
  175.                                 }
  176.                                 SendClientMessage(playerid, colore, "Hai iniziato la rapina!");
  177.                                 format(string, sizeof(string),"Resta per almeno %d minuti nella banca per rapinarla con successo!", temporapina/60000);
  178.                                 SendClientMessage(playerid, colore, string);
  179.                                 format(rapstring, sizeof(rapstring),"%s ha iniziato a rapinare la banca!", rapinatore);
  180.                                 SendClientMessageToAll(colore, rapstring);
  181.                             } else {
  182.                                 SendClientMessage(playerid, colore, "Devi estrarre un'arma da fuoco se vuoi rapinare una banca!");
  183.                             }
  184.                         } else {
  185.                             new minstring[256];
  186.                             format(minstring, sizeof(minstring),"Devono esserci minimo %d poliziotti connessi per poter rapinare la banca!", copsminimi);
  187.                             SendClientMessage(playerid, colore, minstring);
  188.                         }
  189.                     } else {
  190.                         SendClientMessage(playerid, colore, "Stai già rapinando la banca!");
  191.                     }
  192.                 } else {
  193.                     SendClientMessage(playerid, colore, "Al momento non è possibile rapinare la banca!");
  194.                 }
  195.             } else {
  196.                 SendClientMessage(playerid, colore, "Non sei in banca!");
  197.             }
  198.         } else {
  199.             SendClientMessage(playerid, colore, "Sei un poliziotto, non puoi rapinare!");
  200.         }
  201.         return 1;
  202.     }
  203.    
  204.     if (strcmp(cmd, "/copsminimi", true) == 0) {
  205.         if (IsPlayerAdmin(playerid) == 1) {
  206.             if (rapinaincorso == 0) {
  207.                 new tmpmincops;
  208.                 new tmp[256];
  209.                 new string[256];
  210.                 tmp = strtok(cmdtext, idx);
  211.                 if (!strlen(tmp)) {
  212.                     format(string, sizeof(string), "Il numero minimo di poliziotti per fare una rapina è di %d, scrivi /copsminimi [numero] per cambiarli", copsminimi);
  213.                     SendClientMessage(playerid, colore, string);
  214.                     return 1;
  215.                 }
  216.                 tmpmincops = strval(tmp);
  217.                 copsminimi = tmpmincops;
  218.                 format(string, sizeof(string), "Impostato %d come numero minimo di poliziotti per fare una rapina", copsminimi);
  219.                 SendClientMessage(playerid, colore, string);
  220.             } else {
  221.                 SendClientMessage(playerid, colore, "C'è una rapina in corso in questo momento, aspetta che finisca");
  222.             }
  223.         } else {
  224.             SendClientMessage(playerid, colore, "Devi essere admin rcon per utilizzare questo comando");
  225.         }
  226.         return 1;
  227.     }
  228.    
  229.     if (strcmp(cmd, "/bottino", true) == 0) {
  230.         if (IsPlayerAdmin(playerid) == 1) {
  231.             if (rapinaincorso == 0) {
  232.                 new tmpbottino;
  233.                 new tmp[256];
  234.                 new string[256];
  235.                 tmp = strtok(cmdtext, idx);
  236.                 if (!strlen(tmp)) {
  237.                     format(string, sizeof(string), "Il bottino attuale è di %d$, scrivi /bottino [soldi] per cambiarlo", bottino);
  238.                     SendClientMessage(playerid, colore, string);
  239.                     return 1;
  240.                 }
  241.                 tmpbottino = strval(tmp);
  242.                 bottino = tmpbottino;
  243.                 format(string, sizeof(string), "Bottino della rapina impostato a %d$", bottino);
  244.                 SendClientMessage(playerid, colore, string);
  245.             } else {
  246.                 SendClientMessage(playerid, colore, "C'è una rapina in corso in questo momento, aspetta che finisca");
  247.             }
  248.         } else {
  249.             SendClientMessage(playerid, colore, "Devi essere admin rcon per utilizzare questo comando");
  250.         }
  251.         return 1;
  252.     }
  253.    
  254.     if (strcmp(cmd, "/temporapina", true) == 0) {
  255.         if (IsPlayerAdmin(playerid) == 1) {
  256.             if (rapinaincorso == 0) {
  257.                 new tmprapina;
  258.                 new tmp[256];
  259.                 new string[256];
  260.                 tmp = strtok(cmdtext, idx);
  261.                 if (!strlen(tmp)) {
  262.                     format(string, sizeof(string), "Il tempo di rapina attuale è di %d minuti, scrivi /temporapina [minuti] per cambiarlo", temporapina/60000);
  263.                     SendClientMessage(playerid, colore, string);
  264.                     return 1;
  265.                 }
  266.                 tmprapina = strval(tmp) * 60000;
  267.                 temporapina = tmprapina;
  268.                 format(string, sizeof(string), "Tempo della rapina impostato a %d minuti", temporapina/60000);
  269.                 SendClientMessage(playerid, colore, string);
  270.             } else {
  271.                 SendClientMessage(playerid, colore, "C'è una rapina in corso in questo momento, aspetta che finisca");
  272.             }
  273.         } else {
  274.             SendClientMessage(playerid, colore, "Devi essere admin rcon per utilizzare questo comando");
  275.         }
  276.         return 1;
  277.     }
  278.    
  279.     // Debug
  280.    
  281.     /*if (strcmp(cmd, "/polcount", true) == 0) {
  282.         new string[256];
  283.         format(string, sizeof(string), "Numero poliziotti: %d", CopsConnected());
  284.         SendClientMessage(playerid, colore, string);
  285.         return 1;
  286.     }
  287.    
  288.     if (strcmp(cmd, "/isinbank", true) == 0) {
  289.         if (IsInBank(playerid) == 1) {
  290.             SendClientMessage(playerid, colore, "si");
  291.         } else {
  292.             SendClientMessage(playerid, colore, "no");
  293.         }
  294.         return 1;
  295.     }
  296.  
  297.     if (strcmp(cmd, "/ispolice", true) == 0) {
  298.         if (IsPolice(playerid) == 1) {
  299.             SendClientMessage(playerid, colore, "si");
  300.         } else {
  301.             SendClientMessage(playerid, colore, "no");
  302.         }
  303.         return 1;
  304.     }*/
  305.    
  306.     return 0;
  307. }
  308.  
  309. //----------------------------------------------------------------------------//
  310.  
  311. public OnPlayerDeath(playerid, killerid, reason) {
  312.     if (israpinatore[playerid] == 1) {
  313.         if (killerid == INVALID_PLAYER_ID) {
  314.             SendClientMessage(playerid, colore, "Ti sei ucciso durante una rapina e hai fallito!");
  315.         } else {
  316.             if (IsPolice(killerid) == 1) {
  317.                 SendClientMessage(playerid, colore, "Sei stato ucciso da un poliziotto mentre facevi una rapina!");
  318.             } else
  319.             if (israpinatore[killerid] == 1) {
  320.                 SendClientMessage(playerid, colore, "Sei stato ucciso da un'altro rapinatore!");
  321.             } else {
  322.                 SendClientMessage(playerid, colore, "Sei stato ucciso mentre facevi una rapina!");
  323.             }
  324.         }
  325.         israpinatore[playerid] = 0;
  326.         KillTimer(rapinatimer[playerid]);
  327.         rapinaincorso = 0;
  328.     }
  329.     return 1;
  330. }
  331.  
  332. //----------------------------------------------------------------------------//
  333.  
  334. strtok(const string[], &index)
  335. {
  336.     new length = strlen(string);
  337.     while ((index < length) && (string[index] <= ' '))
  338.     {
  339.         index++;
  340.     }
  341.  
  342.     new offset = index;
  343.     new result[20];
  344.     while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
  345.     {
  346.         result[index - offset] = string[index];
  347.         index++;
  348.     }
  349.     result[index - offset] = EOS;
  350.     return result;
  351. }
  352.  
  353. //----------------------------------------------------------------------------//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement