Advertisement
jlalt

wqeqweqeq

Jun 29th, 2016
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 14.97 KB | None | 0 0
  1. #include a_samp
  2. #include zcmd
  3. #include sscanf2
  4. #include foreach
  5. //==================================Colors======================================
  6. #define COLOR_BRIGHTRED         0xDC143CAA
  7. #define yellow                  0xFFFF00AA
  8. #define COLOR_PINK              0xFF66FFAA
  9. #define red                     0xFF0000AA
  10. #define green                   0x33FF33AA
  11. #define blue                    0x00FFFFAA
  12. //====================================Enums=====================================
  13. enum team {
  14.    End,
  15.    RMembers,
  16.    BMembers,
  17.    Leader,
  18.    Price,
  19.    ETeam,
  20.    World,
  21.    Interior,
  22.    EStarted,
  23.    ELocked,
  24.    EName[32],
  25.    ELeader[32],
  26.    EWeapon[2],
  27.    EWeaponA[2],
  28.    Float:REX,
  29.    Float:REY,
  30.    Float:REZ,
  31.    Float:BEX,
  32.    Float:BEY,
  33.    Float:BEZ,
  34. };
  35. new TeamInfo[team];
  36. enum pteam {
  37.    Teamn[10],
  38.    Position,
  39.    Team,
  40.    InTeam,
  41.    WasIn,
  42.    Float:PX,
  43.    Float:PY,
  44.    Float:PZ,
  45.    Color,
  46. };
  47. new PTeam[MAX_PLAYERS][pteam];
  48. new Text:Textdraw55;
  49. //==============================Publics=========================================
  50. public OnFilterScriptInit() {
  51.    Textdraw55 = TextDrawCreate(489.375000, 233.333374, "_");
  52.    TextDrawLetterSize(Textdraw55, 0.449999, 1.600000);
  53.    TextDrawTextSize(Textdraw55, 638.750000, 0.583333);
  54.    TextDrawAlignment(Textdraw55, 1);
  55.    TextDrawColor(Textdraw55, 16777215);
  56.    TextDrawUseBox(Textdraw55, true);
  57.    TextDrawBoxColor(Textdraw55, 255);
  58.    TextDrawSetShadow(Textdraw55, 0);
  59.    TextDrawSetOutline(Textdraw55, 0);
  60.    TextDrawBackgroundColor(Textdraw55, 51);
  61.    TextDrawFont(Textdraw55, 1);
  62.    TextDrawSetProportional(Textdraw55, 1);
  63.    return print("Team system Successfully loaded!");
  64. }
  65.  
  66. public OnFilterScriptExit() {
  67.    TextDrawDestroy(Textdraw55);
  68.    print("Team system Successfully un-loaded!");
  69. }
  70. public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid) {
  71.    if(TeamInfo[EStarted] == 1 && PTeam[playerid][InTeam] == 1) {
  72.      if(damagedid != INVALID_PLAYER_ID && PTeam[playerid][Team] == PTeam[damagedid][Team]) {
  73.        new Float:HP,Float:AR;
  74.        GetPlayerHealth(damagedid,HP); SetPlayerHealth(damagedid,HP);
  75.        GetPlayerArmour(damagedid,AR); SetPlayerArmour(damagedid,AR);
  76.        return GameTextForPlayer(playerid,"~r~Dont shot your team killer!", 2500, 3);
  77.      }
  78.      if(damagedid != INVALID_PLAYER_ID && PTeam[playerid][InTeam] == 1 && damagedid == TeamInfo[Leader]) {
  79.        new Float:HP,Float:AR;
  80.        GetPlayerHealth(damagedid,HP); SetPlayerHealth(damagedid,HP);
  81.        GetPlayerArmour(damagedid,AR); SetPlayerArmour(damagedid,AR);
  82.        return GameTextForPlayer(playerid,"~r~Dont shot your event manager!", 2500, 3);
  83.      }
  84.      if(damagedid != INVALID_PLAYER_ID && playerid == TeamInfo[Leader] && PTeam[damagedid][InTeam] == 1) {
  85.        new Float:HP,Float:AR;
  86.        GetPlayerHealth(damagedid,HP); SetPlayerHealth(damagedid,HP);
  87.        GetPlayerArmour(damagedid,AR); SetPlayerArmour(damagedid,AR);
  88.        return GameTextForPlayer(playerid,"~r~Dont shot your event members!", 2500, 3);
  89.      }
  90.    }
  91.    return 1;
  92. }
  93. public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
  94. {
  95.     if(newkeys & KEY_NO && TeamInfo[Leader] == playerid && PTeam[playerid][Position] == 1) {
  96.           GetPlayerPos(playerid,TeamInfo[REX],TeamInfo[REY],TeamInfo[REZ]);
  97.           SendClientMessage(playerid,green,"Now go on coordings and press N to set Blue Team's position");
  98.           PTeam[playerid][Position] = 2;
  99.           PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  100.     }
  101.     else if(newkeys & KEY_NO && TeamInfo[Leader] == playerid && PTeam[playerid][Position] == 2) {
  102.           GetPlayerPos(playerid,TeamInfo[BEX],TeamInfo[BEY],TeamInfo[BEZ]);
  103.           PTeam[playerid][Position] = 0;
  104.           new string[128];
  105.           format(string,sizeof string,"%s Event Has Been Started! [ Manager: %s || Price: %d$ ] ",TeamInfo[EName],pName(playerid),TeamInfo[Price]);
  106.           SendClientMessageToAll(green,string);
  107.           TeamInfo[End] = SetTimer("endevent", 10*60*1000, 0);
  108.           PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  109.     }
  110. }
  111. public OnPlayerConnect(playerid) {
  112.    PTeam[playerid][Position] = 0;
  113.    PTeam[playerid][Team] = 0;
  114.    PTeam[playerid][WasIn] = 0;
  115.    PTeam[playerid][PX] = 0;
  116.    PTeam[playerid][PY] = 0;
  117.    PTeam[playerid][PZ] = 0;
  118.    PTeam[playerid][Color] = 0;
  119.    PTeam[playerid][InTeam] = 0;
  120. }
  121. forward endevent();
  122. public endevent() {
  123.     TeamInfo[Leader] = INVALID_PLAYER_ID;
  124.     foreach(new i : Player) if(PTeam[i][InTeam] == 1) {
  125.       PTeam[i][InTeam] = 0;
  126.       SetPlayerVirtualWorld(i, 0);
  127.       SetPlayerInterior(i, 0);
  128.       TextDrawHideForPlayer(i, Textdraw55);
  129.       SpawnPlayer(i);
  130.     }
  131.     TeamInfo[EStarted] = 0;
  132.     TeamInfo[RMembers] = 0;
  133.     TeamInfo[BMembers] = 0;
  134.     new string[128];
  135.     format(string,sizeof string,"{5EFF00}%s {0084FF}Event Started By: {5EFF00}%s {0084FF}Has just finished!",TeamInfo[EName],TeamInfo[ELeader]);
  136.     return SendClientMessageToAll(0x0084FFAA,string);
  137. }
  138. public OnPlayerDisconnect(playerid) {
  139.    if(PTeam[playerid][InTeam] == 1) {
  140.       new red1,blue1,string[128];
  141.       PTeam[playerid][InTeam] = 0;
  142.       if(PTeam[playerid][Team] == 0) TeamInfo[RMembers] --;
  143.       if(PTeam[playerid][Team] == 1) TeamInfo[BMembers] --;
  144.       format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
  145.       TextDrawSetString(Textdraw55,string);
  146.       TextDrawHideForPlayer(playerid, Textdraw55);
  147.       foreach(new i : Player) if(PTeam[i][InTeam] == 1) {
  148.          TextDrawShowForPlayer(i, Textdraw55);
  149.          if(PTeam[i][Team] == 0) red1 ++;
  150.          if(PTeam[i][Team] == 1) blue1 ++;
  151.       }
  152.       if(red1 == 0 && blue1 == 0) {
  153.          SendClientMessageToAll(green,"Red And Blue Battle Equaled!");
  154.          foreach(new i : Player) if(PTeam[i][WasIn] == 1) {
  155.             PlayerPlaySound(i,1057,0.0,0.0,0.0);
  156.             GivePlayerMoney(i, TeamInfo[Price]);
  157.             PTeam[i][WasIn] = 0;
  158.             TeamInfo[RMembers] = 0;
  159.             TeamInfo[BMembers] = 0;
  160.          }
  161.          return endevent();
  162.       }
  163.       if(red1 >= 1 && blue1 == 0) {
  164.         SendClientMessageToAll(green,"Red Team Members Won the battle!");
  165.         foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 0) {
  166.            GivePlayerMoney(i, TeamInfo[Price]);
  167.            PlayerPlaySound(i,1057,0.0,0.0,0.0);
  168.            PTeam[i][WasIn] = 0;
  169.            TeamInfo[RMembers] = 0;
  170.            TeamInfo[BMembers] = 0;
  171.            return endevent();
  172.         }
  173.       }
  174.       if(blue1 >= 1 && red1 == 0) {
  175.         SendClientMessageToAll(green,"Blue Team Members Won the battle!");
  176.         foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 1) {
  177.            GivePlayerMoney(i, TeamInfo[Price]);
  178.            PlayerPlaySound(i,1057,0.0,0.0,0.0);
  179.            PTeam[i][WasIn] = 0;
  180.            TeamInfo[RMembers] = 0;
  181.            TeamInfo[BMembers] = 0;
  182.            return endevent();
  183.         }
  184.       }
  185.    }
  186.    return 1;
  187. }
  188. public OnPlayerDeath(playerid, killerid, reason) {
  189.    if(PTeam[playerid][InTeam] == 1) {
  190.       new red1,blue1,string[128];
  191.       PTeam[playerid][InTeam] = 0;
  192.       if(PTeam[playerid][Team] == 0) TeamInfo[RMembers] --;
  193.       if(PTeam[playerid][Team] == 1) TeamInfo[BMembers] --;
  194.       format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
  195.       TextDrawSetString(Textdraw55,string);
  196.       TextDrawHideForPlayer(playerid, Textdraw55);
  197.       foreach(new i : Player) if(PTeam[i][InTeam] == 1) {
  198.          TextDrawShowForPlayer(i, Textdraw55);
  199.          if(PTeam[i][Team] == 0) red1 ++;
  200.          if(PTeam[i][Team] == 1) blue1 ++;
  201.       }
  202.       if(red1 == 0 && blue1 == 0) {
  203.          SendClientMessageToAll(green,"Red And Blue Members Equaled!");
  204.          foreach(new i : Player) if(PTeam[i][WasIn] == 1) {
  205.             PlayerPlaySound(i,1057,0.0,0.0,0.0);
  206.             GivePlayerMoney(i, TeamInfo[Price]);
  207.             PTeam[i][WasIn] = 0;
  208.             TeamInfo[RMembers] = 0;
  209.             TeamInfo[BMembers] = 0;
  210.          }
  211.          return endevent();
  212.       }
  213.       if(red1 >= 1 && blue1 == 0) {
  214.         SendClientMessageToAll(green,"Red Team Members Won the battle!");
  215.         foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 0) {
  216.            GivePlayerMoney(i, TeamInfo[Price]);
  217.            PlayerPlaySound(i,1057,0.0,0.0,0.0);
  218.            PTeam[i][WasIn] = 0;
  219.            TeamInfo[RMembers] = 0;
  220.            TeamInfo[BMembers] = 0;
  221.            return endevent();
  222.         }
  223.       }
  224.       if(blue1 >= 1 && red1 == 0) {
  225.         SendClientMessageToAll(green,"Blue Team Members Won the battle!");
  226.         foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 1) {
  227.            GivePlayerMoney(i, TeamInfo[Price]);
  228.            PlayerPlaySound(i,1057,0.0,0.0,0.0);
  229.            PTeam[i][WasIn] = 0;
  230.            TeamInfo[RMembers] = 0;
  231.            TeamInfo[BMembers] = 0;
  232.            return endevent();
  233.         }
  234.       }
  235.    }
  236.    return 1;
  237. }
  238. public OnPlayerCommandReceived(playerid, cmdtext[]) {
  239.    if(PTeam[playerid][InTeam] == 1 && strcmp(cmdtext,"texit", true) == 0) {
  240.       SendClientMessage(playerid,red,"ERROR: You can't use command if you're in team event!");
  241.       return 1;
  242.    }
  243.    return 0;
  244. }
  245. forward UpdateText(playerid);
  246. public UpdateText(playerid) {
  247.    new string[128];
  248.    format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
  249.    TextDrawSetString(Textdraw55,string);
  250.    TextDrawShowForPlayer(playerid, Textdraw55);
  251. }
  252. //====================================Commands==================================
  253. CMD:tsetup(playerid,params[]) {
  254.    if(TeamInfo[EStarted] == 0) {
  255.       if(sscanf(params,"s[32]iiiii",TeamInfo[EName],TeamInfo[Price],TeamInfo[EWeapon][0],TeamInfo[EWeaponA][0],TeamInfo[EWeapon][1],TeamInfo[EWeaponA][1])) return SendClientMessage(playerid,red,"Usage: /tsetup [name] [price $] [weapon1] [weapon1 ammmo] [weapon 2] [weapon2 ammo]");
  256.       if(GetPlayerMoney(playerid) - TeamInfo[Price] < 0) return SendClientMessage(playerid,red,"ERROR: You don't have enough cash for this prace!");
  257.       if(TeamInfo[Price] <= 0) return SendClientMessage(playerid,red,"ERROR: Invalid Price cost!");
  258.       if(!IsValidWeapon(TeamInfo[EWeapon][0])) return SendClientMessage(playerid,red,"ERROR: Invalid weapon ID");
  259.       format(TeamInfo[ELeader],sizeof TeamInfo[ELeader],"%s",pName(playerid));
  260.       TeamInfo[Leader] = playerid;
  261.       SetPlayerVirtualWorld(playerid,26);
  262.       TeamInfo[World] = GetPlayerVirtualWorld(playerid);
  263.       TeamInfo[Interior] = GetPlayerInterior(playerid);
  264.       PTeam[playerid][Position] = 1;
  265.       TeamInfo[EStarted] = 1;
  266.       PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  267.       return SendClientMessage(playerid,green,"Go on Coordings and press N to set Red Team's position");
  268.    }
  269.    else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: There are already team event's running");
  270. }
  271. CMD:tstart(playerid,params[]) {
  272.    if(TeamInfo[Leader] == playerid) {
  273.       new red1,blue1;
  274.       foreach(new i : Player) {
  275.        if(PTeam[i][Team] == 0) red1 ++;
  276.        if(PTeam[i][Team] == 1) blue1 ++;
  277.        if(red1 == 0 || blue1 == 0) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: Your event don't have enough members to be started!");
  278.       }
  279.       foreach(new i : Player)
  280.       if(PTeam[i][InTeam] == 1) {
  281.         GivePlayerWeapon(i, TeamInfo[EWeapon][0], TeamInfo[EWeaponA][0]);
  282.         if(IsValidWeapon(TeamInfo[EWeapon][1])) GivePlayerWeapon(i, TeamInfo[EWeapon][1], TeamInfo[EWeaponA][1]);
  283.         TogglePlayerControllable(i,1);
  284.       }
  285.       PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  286.       new string[128];
  287.       format(string,sizeof string,"Team Event %s Has Started! Good Luck",TeamInfo[EName]);
  288.       return SendClientMessageToAll(green,string);
  289.    } else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You need to be event manager to use this command");
  290. }
  291. CMD:tend(playerid,params[]) {
  292.    if(TeamInfo[EStarted] == 0) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: Event is already finished!");
  293.    if(IsPlayerAdmin(playerid) || TeamInfo[Leader] == playerid) {
  294.       PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  295.       KillTimer(TeamInfo[End]);
  296.       return endevent();
  297.    }
  298.    else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You need to be event manager to use this command");
  299. }
  300. CMD:tjoin(playerid,params[]) {
  301.    if(TeamInfo[EStarted] == 1) {
  302.       if(TeamInfo[Leader] == playerid) return SendClientMessage(playerid, red,"ERROR: You're event 'manager' not allowed to join it!");
  303.       if(PTeam[playerid][InTeam] == 1) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You already in the team event!");
  304.       if(TeamInfo[ELocked] == 1) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: Event Already Started! no one able to join");
  305.       new string[128];
  306.       if(TeamInfo[ETeam] == 0) {
  307.          format(PTeam[playerid][Teamn], 10,"red");
  308.          PTeam[playerid][Team] = 0;
  309.          TeamInfo[ETeam] = 1;
  310.          PTeam[playerid][Color] = GetPlayerColor(playerid);
  311.          SetPlayerColor(playerid,red);
  312.          TeamInfo[RMembers] ++;
  313.       }
  314.       else if(TeamInfo[ETeam] == 1) {
  315.          format(PTeam[playerid][Team], 10,"blue");
  316.          PTeam[playerid][Team] = 1;
  317.          TeamInfo[ETeam] = 0;
  318.          PTeam[playerid][Color] = GetPlayerColor(playerid);
  319.          SetPlayerColor(playerid,blue);
  320.          TeamInfo[BMembers] ++;
  321.       }
  322.       ResetPlayerWeapons(playerid);
  323.       TogglePlayerControllable(playerid,0);
  324.       format(string,sizeof string,"%s Has Joined %s Team Event Team: %s!",pName(playerid),TeamInfo[EName],PTeam[playerid][Teamn]);
  325.       SendClientMessageToAll(yellow,string);
  326.       GetPlayerPos(playerid,PTeam[playerid][PX],PTeam[playerid][PY],PTeam[playerid][PZ]);
  327.       PTeam[playerid][InTeam] = 1;
  328.       format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
  329.       TextDrawSetString(Textdraw55,string);
  330.       TextDrawShowForPlayer(playerid, Textdraw55);
  331.       SetTimerEx("UpdateText", 1000, 1, "i", playerid);
  332.       if(PTeam[playerid][Team] == 0) SetPlayerPos(playerid,TeamInfo[REX],TeamInfo[REY],TeamInfo[REZ]);
  333.       if(PTeam[playerid][Team] == 1) SetPlayerPos(playerid,TeamInfo[BEX],TeamInfo[BEY],TeamInfo[BEZ]);
  334.       return 1;
  335.      
  336.    }
  337.    else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: There are no team is running at the moment!");
  338. }
  339.      
  340. CMD:texit(playerid,params[]) {
  341.    if(PTeam[playerid][InTeam] == 1) {
  342.       new string[128];
  343.       format(string,sizeof string,"%s Has left %s Team Event Team: %s!",pName(playerid),TeamInfo[EName],PTeam[playerid][Teamn]);
  344.       SendClientMessageToAll(COLOR_PINK,string);
  345.       PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
  346.       SetPlayerColor(playerid,GetPlayerColor(playerid));
  347.       PTeam[playerid][InTeam] = 0;
  348.       TogglePlayerControllable(playerid,1);
  349.       if(PTeam[playerid][Team] == 0) TeamInfo[RMembers] --;
  350.       if(PTeam[playerid][Team] == 1) TeamInfo[BMembers] --;
  351.       format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
  352.       TextDrawSetString(Textdraw55,string);
  353.       TextDrawHideForPlayer(playerid,Textdraw55);
  354.       foreach(new i : Player) if(PTeam[i][InTeam] == 1) TextDrawShowForPlayer(i, Textdraw55);
  355.       return SetPlayerPos(playerid,PTeam[playerid][PX],PTeam[playerid][PY],PTeam[playerid][PZ]);
  356.    }
  357.    else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You need to be in team event to exit from it!");
  358. }
  359. //====================================Functions=================================
  360. pName(playerid) {
  361.   new pname[MAX_PLAYER_NAME+1];
  362.   GetPlayerName(playerid, pname, sizeof(pname));
  363.   return pname;
  364. }
  365. IsValidWeapon(weaponid)
  366. {
  367.     if (weaponid > 0 && weaponid < 19 || weaponid > 21 && weaponid < 47) return 1;
  368.     return 0;
  369. }
  370. //============================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement