Advertisement
jlalt

:'c me sad

Jul 8th, 2016
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 6.89 KB | None | 0 0
  1. #include a_samp
  2. #include zcmd
  3.  
  4. // Defines
  5.  
  6. #define MAX_DERBY_POSITIONS 2 // so will be able to put players on random derbys [ avoid boring ]
  7. #define MAX_DERBY_PLAYERS 6
  8.  
  9. enum derbyinfo {
  10.    PlayersIN[2],
  11.    MateFinishit,
  12.    Running,
  13.    DerbyTimerz,
  14.    Float:lowestZ,
  15.    Float:X12,
  16.    Float:Y12,
  17.    Float:Z12,
  18. }
  19. new DerbyLOL[derbyinfo];
  20.  
  21. enum pinfoz {
  22.  InDerby,
  23. }
  24.  
  25. new PlayerInfo[MAX_PLAYERS][pinfoz];
  26.  
  27. public OnPlayerConnect(playerid) {
  28.    PlayerInfo[playerid][InDerby] = 0;
  29. }
  30.  
  31. public OnPlayerDisconnect(playerid) {
  32.    if(PlayerInfo[playerid][InDerby])
  33.    {
  34.       EliminatePlayer(playerid, "Left The Server");
  35.    }
  36. }
  37.  
  38. // Important functions
  39. GetRacePositions(raceid, &Float:X, &Float:Y, &Float:Z) { // & to be able to change X Y Z value by the function
  40.    switch(raceid)
  41.    {
  42.       case 0: {
  43.          X = 0.0; // here you put the X you got from /save
  44.          Y = 0.0; // here you put the Y you got from /save
  45.          Z = 0.0; // here you put the Z you got from /save
  46.       }
  47.       case 1: {
  48.          X = 0.0; // here you put the X you got from /save
  49.          Y = 0.0; // here you put the Y you got from /save
  50.          Z = 0.0; // here you put the Z you got from /save
  51.       }
  52.    }
  53. }
  54.  
  55. GetDerbyName(derbyid) {
  56.    new derbyname[50];
  57.    switch(derbyid) {
  58.       case 0: derbyname = "Omarito Derby";
  59.       case 1: derbyname = "Join if you dare :d";
  60.       case 2: { }
  61.       // ...
  62.       default: derbyname = "Unknow"; // that mean if none of the cases value matched
  63.    }
  64.    return derbyname;
  65. }
  66.  
  67. StartDerby(WHATID) {
  68.    switch(WHATID) {
  69.       case 0: // race position 1
  70.       {
  71.          new Float:X, Float:Y, Float:Z;
  72.          GetRacePositions(WHATID, X, Y, Z);
  73.          DerbyLOL[X12] = X;
  74.          DerbyLOL[Y12] = Y;
  75.          DerbyLOL[Z12] = Z;
  76.          DerbyLOL[lowestZ] = 0.0; // lowest Z to check if players fall, if you got a map in sky put it as objects Z - 5 else if wanna check if player is in water use 0
  77.          // ^ becasue its float so we use 0.0 instead just 0
  78.          DerbyLOL[DerbyTimerz] = SetTimer("DerbyChecker", 1000, 1); // to be able to check players every 1 second, DerbyTimerz = to be able to kill the timer later
  79.          DerbyLOL[MateFinishit] = SetTimer("FinishITDUDE", 4 * 60 * 1000, 0);
  80.          DerbyLOL[Running] = 1;
  81.       }
  82.    }
  83. }
  84.  
  85. forward public FinishITDUDE();
  86. public FinishITDUDE() {
  87.    if(!DerbyLOL[Running] || DerbyLOL[PlayersIN][0] == 0) return 1;
  88.    if(DerbyLOL[PlayersIN][0] == 1)
  89.    {
  90.       AnnounceDerbyWinner();
  91.       return 1;
  92.    }
  93.    else
  94.    {
  95.        SendClientMessageToAll(-1,"Derby has been finished | No One Won |");
  96.        FinishDerby();
  97.        return 1;
  98.    }
  99. }
  100.  
  101. forward public DerbyChecker();
  102. public DerbyChecker() {
  103.    for(new i = 0; i < MAX_PLAYERS; i++) {
  104.       if(IsPlayerConnected(i) && PlayerInfo[i][InDerby]) { // checks if player connected and his InDerby value is not 0 or below 1
  105.           new Float:X, Float:Y, Float:Z;
  106.           GetPlayerPos(i, X, Y, Z);
  107.           if(Z < DerbyLOL[lowestZ]) // check if player fall / his Z pos lower than the one we defined
  108.           {
  109.               EliminatePlayer(i, "Fall Down");
  110.           }
  111.           else
  112.           {
  113.              if(!IsPlayerInAnyVehicle(i)) // check if player is not in any vehicle
  114.              {
  115.                 EliminatePlayer(i, "Out Of Vehicle");
  116.              }
  117.           }
  118.       }
  119.    }
  120. }
  121.  
  122. FinishDerby() {
  123.    for(new i = 0; i < MAX_PLAYERS; i++)
  124.    {
  125.       PlayerInfo[i][InDerby] = 0;
  126.    }
  127.    KillTimer(DerbyLOL[DerbyTimerz]);
  128.  
  129.    DerbyLOL[PlayersIN][0] = 0;
  130.    DerbyLOL[PlayersIN][1] = 0;
  131.    DerbyLOL[Running] = 0;
  132.    DerbyLOL[DerbyTimerz] = 0;
  133.    DerbyLOL[lowestZ] = 0.0;
  134.    DerbyLOL[X12] = 0.0;
  135.    DerbyLOL[Y12] = 0.0;
  136.    DerbyLOL[Z12] = 0.0;
  137.    return 1;
  138. }
  139.  
  140. AnnounceDerbyWinner() {
  141.    for(new i = 0; i < MAX_PLAYERS; i++) {
  142.       if(IsPlayerConnected(i) && PlayerInfo[i][InDerby]) {
  143.          new string[128],name11[24];
  144.          GetPlayerName(i, name11, sizeof name11);
  145.          format(string,sizeof string,"%s has won the derby!",name11);
  146.          SendClientMessageToAll(-1, string);
  147.          PlayerInfo[i][InDerby] = 0;
  148.          GivePlayerMoney(i, 50000);
  149.          break; // stop the loop
  150.       }
  151.    }
  152.    for(new i = 0; i < MAX_PLAYERS; i++)
  153.    {
  154.       PlayerInfo[i][InDerby] = 0;
  155.    }
  156.    KillTimer(DerbyLOL[DerbyTimerz]);
  157.  
  158.    DerbyLOL[PlayersIN][0] = 0;
  159.    DerbyLOL[PlayersIN][1] = 0;
  160.    DerbyLOL[DerbyTimerz] = 0;
  161.    DerbyLOL[Running] = 0;
  162.    DerbyLOL[lowestZ] = 0.0;
  163.    DerbyLOL[X12] = 0.0;
  164.    DerbyLOL[Y12] = 0.0;
  165.    DerbyLOL[Z12] = 0.0;
  166. }
  167.  
  168. EliminatePlayer(playerid, const reason[]) {
  169.    if(!PlayerInfo[playerid][InDerby]) return 1; // simple checker to check if player is really in derby to eliminate him
  170.    new string[128],name11[24];
  171.    GetPlayerName(playerid, name11, sizeof name11);
  172.    format(string, sizeof string,"%s has been eliminated from derby |- Position: %d -|- Reason: %s -|",name11, DerbyLOL[PlayersIN][0], reason);
  173.    SendClientMessageToAll(-1, string);
  174.    PlayerInfo[playerid][InDerby] = 0;
  175.    SpawnPlayer(playerid);
  176.    if(DerbyLOL[PlayersIN][0] == 3)
  177.    {
  178.       GivePlayerMoney(playerid, 20000);
  179.    }
  180.    if(DerbyLOL[PlayersIN][0] == 2)
  181.    {
  182.       GivePlayerMoney(playerid, 30000);
  183.    }
  184.  
  185.    DerbyLOL[PlayersIN][0] --;
  186.    if(DerbyLOL[PlayersIN][0] == 1) AnnounceDerbyWinner();
  187.    return 1;
  188. }
  189.  
  190. // Commands
  191. CMD:derbylol(playerid,params[]) {
  192.    if(!IsPlayerAdmin(playerid)) return 0;
  193.    new rand = random(MAX_DERBY_POSITIONS);
  194.    StartDerby(rand);
  195.    new string[128];
  196.    format(string,sizeof string,"Derby %s has started use /derby to join",GetDerbyName(rand));
  197.    return 1;
  198. }
  199.  
  200. forward public SpawnHiSCarZ(playerid);
  201. public SpawnHiSCarZ(playerid) {
  202.    new rand = random(4);
  203.    CarSpawner(playerid,(rand==0) ? (402) : (rand==1) ? (495) : (rand==2) ? (573) : (rand==3) ? (494) : (495));
  204. }
  205.  
  206. forward CarSpawner(playerid,cmodel);
  207. public CarSpawner(playerid,cmodel)
  208. {
  209.     if(IsPlayerInAnyVehicle(playerid)) return 1;
  210.     new Float:x, Float:y, Float:z, Float:angle;
  211.     GetPlayerPos(playerid, x, y, z);
  212.     GetPlayerFacingAngle(playerid, angle);
  213.     new ctsvehicle=CreateVehicle(cmodel, x, y, z, angle, -1, -1, 10000);
  214.     SetVehicleVirtualWorld(ctsvehicle, GetPlayerVirtualWorld(playerid));
  215.     LinkVehicleToInterior(ctsvehicle, GetPlayerInterior(playerid));
  216.     PutPlayerInVehicle(playerid, ctsvehicle, 0);
  217.     return 1;
  218. }
  219.  
  220. CMD:derby(playerid,params[]) { // to join derby
  221.    if(PlayerInfo[playerid][InDerby] >= MAX_DERBY_PLAYERS) return SendClientMessage(playerid, -1,"Yo mate you are already in derby!");
  222.    if(DerbyLOL[PlayersIN][1]) return SendClientMessage(playerid, -1,"ERROR: Derby maximum players ammount already reached");
  223.    if(!DerbyLOL[Running]) return SendClientMessage(playerid, -1,"ERROR: No derby running to join it");
  224.    SetPlayerPos(playerid, DerbyLOL[X12], DerbyLOL[Y12], DerbyLOL[Z12]);
  225.    SetTimerEx("SpawnHiSCarZ", 1500, 0, "i", playerid);
  226.    PlayerInfo[playerid][InDerby] = 1;
  227.    new string[128],name11[24];
  228.    GetPlayerName(playerid, name11, sizeof name11);
  229.    format(string,sizeof string,"%s has joined derby! | use /derby to join |",name11);
  230.    SendClientMessageToAll(-1, string);
  231.    DerbyLOL[PlayersIN][0] ++;
  232.    DerbyLOL[PlayersIN][1] ++;
  233.    return 1;
  234. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement