Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include a_samp
- #include zcmd
- #include sscanf2
- #include foreach
- //==================================Colors======================================
- #define COLOR_BRIGHTRED 0xDC143CAA
- #define yellow 0xFFFF00AA
- #define COLOR_PINK 0xFF66FFAA
- #define red 0xFF0000AA
- #define green 0x33FF33AA
- #define blue 0x00FFFFAA
- //====================================Enums=====================================
- enum team {
- End,
- RMembers,
- BMembers,
- Leader,
- Price,
- ETeam,
- World,
- Interior,
- EStarted,
- ELocked,
- EName[32],
- ELeader[32],
- EWeapon[2],
- EWeaponA[2],
- Float:REX,
- Float:REY,
- Float:REZ,
- Float:BEX,
- Float:BEY,
- Float:BEZ,
- };
- new TeamInfo[team];
- enum pteam {
- Teamn[10],
- Position,
- Team,
- InTeam,
- WasIn,
- Float:PX,
- Float:PY,
- Float:PZ,
- Color,
- };
- new PTeam[MAX_PLAYERS][pteam];
- new Text:Textdraw55;
- //==============================Publics=========================================
- public OnFilterScriptInit() {
- Textdraw55 = TextDrawCreate(489.375000, 233.333374, "_");
- TextDrawLetterSize(Textdraw55, 0.449999, 1.600000);
- TextDrawTextSize(Textdraw55, 638.750000, 0.583333);
- TextDrawAlignment(Textdraw55, 1);
- TextDrawColor(Textdraw55, 16777215);
- TextDrawUseBox(Textdraw55, true);
- TextDrawBoxColor(Textdraw55, 255);
- TextDrawSetShadow(Textdraw55, 0);
- TextDrawSetOutline(Textdraw55, 0);
- TextDrawBackgroundColor(Textdraw55, 51);
- TextDrawFont(Textdraw55, 1);
- TextDrawSetProportional(Textdraw55, 1);
- return print("Team system Successfully loaded!");
- }
- public OnFilterScriptExit() {
- TextDrawDestroy(Textdraw55);
- print("Team system Successfully un-loaded!");
- }
- public OnPlayerGiveDamage(playerid, damagedid, Float:amount, weaponid) {
- if(TeamInfo[EStarted] == 1 && PTeam[playerid][InTeam] == 1) {
- if(damagedid != INVALID_PLAYER_ID && PTeam[playerid][Team] == PTeam[damagedid][Team]) {
- new Float:HP,Float:AR;
- GetPlayerHealth(damagedid,HP); SetPlayerHealth(damagedid,HP);
- GetPlayerArmour(damagedid,AR); SetPlayerArmour(damagedid,AR);
- return GameTextForPlayer(playerid,"~r~Dont shot your team killer!", 2500, 3);
- }
- if(damagedid != INVALID_PLAYER_ID && PTeam[playerid][InTeam] == 1 && damagedid == TeamInfo[Leader]) {
- new Float:HP,Float:AR;
- GetPlayerHealth(damagedid,HP); SetPlayerHealth(damagedid,HP);
- GetPlayerArmour(damagedid,AR); SetPlayerArmour(damagedid,AR);
- return GameTextForPlayer(playerid,"~r~Dont shot your event manager!", 2500, 3);
- }
- if(damagedid != INVALID_PLAYER_ID && playerid == TeamInfo[Leader] && PTeam[damagedid][InTeam] == 1) {
- new Float:HP,Float:AR;
- GetPlayerHealth(damagedid,HP); SetPlayerHealth(damagedid,HP);
- GetPlayerArmour(damagedid,AR); SetPlayerArmour(damagedid,AR);
- return GameTextForPlayer(playerid,"~r~Dont shot your event members!", 2500, 3);
- }
- }
- return 1;
- }
- public OnPlayerKeyStateChange(playerid, newkeys, oldkeys)
- {
- if(newkeys & KEY_NO && TeamInfo[Leader] == playerid && PTeam[playerid][Position] == 1) {
- GetPlayerPos(playerid,TeamInfo[REX],TeamInfo[REY],TeamInfo[REZ]);
- SendClientMessage(playerid,green,"Now go on coordings and press N to set Blue Team's position");
- PTeam[playerid][Position] = 2;
- PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
- }
- else if(newkeys & KEY_NO && TeamInfo[Leader] == playerid && PTeam[playerid][Position] == 2) {
- GetPlayerPos(playerid,TeamInfo[BEX],TeamInfo[BEY],TeamInfo[BEZ]);
- PTeam[playerid][Position] = 0;
- new string[128];
- format(string,sizeof string,"%s Event Has Been Started! [ Manager: %s || Price: %d$ ] ",TeamInfo[EName],pName(playerid),TeamInfo[Price]);
- SendClientMessageToAll(green,string);
- TeamInfo[End] = SetTimer("endevent", 10*60*1000, 0);
- PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
- }
- }
- public OnPlayerConnect(playerid) {
- PTeam[playerid][Position] = 0;
- PTeam[playerid][Team] = 0;
- PTeam[playerid][WasIn] = 0;
- PTeam[playerid][PX] = 0;
- PTeam[playerid][PY] = 0;
- PTeam[playerid][PZ] = 0;
- PTeam[playerid][Color] = 0;
- PTeam[playerid][InTeam] = 0;
- }
- forward endevent();
- public endevent() {
- TeamInfo[Leader] = INVALID_PLAYER_ID;
- foreach(new i : Player) if(PTeam[i][InTeam] == 1) {
- PTeam[i][InTeam] = 0;
- SetPlayerVirtualWorld(i, 0);
- SetPlayerInterior(i, 0);
- TextDrawHideForPlayer(i, Textdraw55);
- SpawnPlayer(i);
- }
- TeamInfo[EStarted] = 0;
- TeamInfo[RMembers] = 0;
- TeamInfo[BMembers] = 0;
- new string[128];
- format(string,sizeof string,"{5EFF00}%s {0084FF}Event Started By: {5EFF00}%s {0084FF}Has just finished!",TeamInfo[EName],TeamInfo[ELeader]);
- return SendClientMessageToAll(0x0084FFAA,string);
- }
- public OnPlayerDisconnect(playerid) {
- if(PTeam[playerid][InTeam] == 1) {
- new red1,blue1,string[128];
- PTeam[playerid][InTeam] = 0;
- if(PTeam[playerid][Team] == 0) TeamInfo[RMembers] --;
- if(PTeam[playerid][Team] == 1) TeamInfo[BMembers] --;
- format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
- TextDrawSetString(Textdraw55,string);
- TextDrawHideForPlayer(playerid, Textdraw55);
- foreach(new i : Player) if(PTeam[i][InTeam] == 1) {
- TextDrawShowForPlayer(i, Textdraw55);
- if(PTeam[i][Team] == 0) red1 ++;
- if(PTeam[i][Team] == 1) blue1 ++;
- }
- if(red1 == 0 && blue1 == 0) {
- SendClientMessageToAll(green,"Red And Blue Battle Equaled!");
- foreach(new i : Player) if(PTeam[i][WasIn] == 1) {
- PlayerPlaySound(i,1057,0.0,0.0,0.0);
- GivePlayerMoney(i, TeamInfo[Price]);
- PTeam[i][WasIn] = 0;
- TeamInfo[RMembers] = 0;
- TeamInfo[BMembers] = 0;
- }
- return endevent();
- }
- if(red1 >= 1 && blue1 == 0) {
- SendClientMessageToAll(green,"Red Team Members Won the battle!");
- foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 0) {
- GivePlayerMoney(i, TeamInfo[Price]);
- PlayerPlaySound(i,1057,0.0,0.0,0.0);
- PTeam[i][WasIn] = 0;
- TeamInfo[RMembers] = 0;
- TeamInfo[BMembers] = 0;
- return endevent();
- }
- }
- if(blue1 >= 1 && red1 == 0) {
- SendClientMessageToAll(green,"Blue Team Members Won the battle!");
- foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 1) {
- GivePlayerMoney(i, TeamInfo[Price]);
- PlayerPlaySound(i,1057,0.0,0.0,0.0);
- PTeam[i][WasIn] = 0;
- TeamInfo[RMembers] = 0;
- TeamInfo[BMembers] = 0;
- return endevent();
- }
- }
- }
- return 1;
- }
- public OnPlayerDeath(playerid, killerid, reason) {
- if(PTeam[playerid][InTeam] == 1) {
- new red1,blue1,string[128];
- PTeam[playerid][InTeam] = 0;
- if(PTeam[playerid][Team] == 0) TeamInfo[RMembers] --;
- if(PTeam[playerid][Team] == 1) TeamInfo[BMembers] --;
- format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
- TextDrawSetString(Textdraw55,string);
- TextDrawHideForPlayer(playerid, Textdraw55);
- foreach(new i : Player) if(PTeam[i][InTeam] == 1) {
- TextDrawShowForPlayer(i, Textdraw55);
- if(PTeam[i][Team] == 0) red1 ++;
- if(PTeam[i][Team] == 1) blue1 ++;
- }
- if(red1 == 0 && blue1 == 0) {
- SendClientMessageToAll(green,"Red And Blue Members Equaled!");
- foreach(new i : Player) if(PTeam[i][WasIn] == 1) {
- PlayerPlaySound(i,1057,0.0,0.0,0.0);
- GivePlayerMoney(i, TeamInfo[Price]);
- PTeam[i][WasIn] = 0;
- TeamInfo[RMembers] = 0;
- TeamInfo[BMembers] = 0;
- }
- return endevent();
- }
- if(red1 >= 1 && blue1 == 0) {
- SendClientMessageToAll(green,"Red Team Members Won the battle!");
- foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 0) {
- GivePlayerMoney(i, TeamInfo[Price]);
- PlayerPlaySound(i,1057,0.0,0.0,0.0);
- PTeam[i][WasIn] = 0;
- TeamInfo[RMembers] = 0;
- TeamInfo[BMembers] = 0;
- return endevent();
- }
- }
- if(blue1 >= 1 && red1 == 0) {
- SendClientMessageToAll(green,"Blue Team Members Won the battle!");
- foreach(new i : Player) if(PTeam[i][WasIn] == 1 && PTeam[i][Team] == 1) {
- GivePlayerMoney(i, TeamInfo[Price]);
- PlayerPlaySound(i,1057,0.0,0.0,0.0);
- PTeam[i][WasIn] = 0;
- TeamInfo[RMembers] = 0;
- TeamInfo[BMembers] = 0;
- return endevent();
- }
- }
- }
- return 1;
- }
- public OnPlayerCommandReceived(playerid, cmdtext[]) {
- if(PTeam[playerid][InTeam] == 1 && strcmp(cmdtext,"texit", true) == 0) {
- SendClientMessage(playerid,red,"ERROR: You can't use command if you're in team event!");
- return 1;
- }
- return 0;
- }
- forward UpdateText(playerid);
- public UpdateText(playerid) {
- new string[128];
- format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
- TextDrawSetString(Textdraw55,string);
- TextDrawShowForPlayer(playerid, Textdraw55);
- }
- //====================================Commands==================================
- CMD:tsetup(playerid,params[]) {
- if(TeamInfo[EStarted] == 0) {
- 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]");
- if(GetPlayerMoney(playerid) - TeamInfo[Price] < 0) return SendClientMessage(playerid,red,"ERROR: You don't have enough cash for this prace!");
- if(TeamInfo[Price] <= 0) return SendClientMessage(playerid,red,"ERROR: Invalid Price cost!");
- if(!IsValidWeapon(TeamInfo[EWeapon][0])) return SendClientMessage(playerid,red,"ERROR: Invalid weapon ID");
- format(TeamInfo[ELeader],sizeof TeamInfo[ELeader],"%s",pName(playerid));
- TeamInfo[Leader] = playerid;
- SetPlayerVirtualWorld(playerid,26);
- TeamInfo[World] = GetPlayerVirtualWorld(playerid);
- TeamInfo[Interior] = GetPlayerInterior(playerid);
- PTeam[playerid][Position] = 1;
- TeamInfo[EStarted] = 1;
- PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
- return SendClientMessage(playerid,green,"Go on Coordings and press N to set Red Team's position");
- }
- else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: There are already team event's running");
- }
- CMD:tstart(playerid,params[]) {
- if(TeamInfo[Leader] == playerid) {
- new red1,blue1;
- foreach(new i : Player) {
- if(PTeam[i][Team] == 0) red1 ++;
- if(PTeam[i][Team] == 1) blue1 ++;
- if(red1 == 0 || blue1 == 0) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: Your event don't have enough members to be started!");
- }
- foreach(new i : Player)
- if(PTeam[i][InTeam] == 1) {
- GivePlayerWeapon(i, TeamInfo[EWeapon][0], TeamInfo[EWeaponA][0]);
- if(IsValidWeapon(TeamInfo[EWeapon][1])) GivePlayerWeapon(i, TeamInfo[EWeapon][1], TeamInfo[EWeaponA][1]);
- TogglePlayerControllable(i,1);
- }
- PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
- new string[128];
- format(string,sizeof string,"Team Event %s Has Started! Good Luck",TeamInfo[EName]);
- return SendClientMessageToAll(green,string);
- } else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You need to be event manager to use this command");
- }
- CMD:tend(playerid,params[]) {
- if(TeamInfo[EStarted] == 0) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: Event is already finished!");
- if(IsPlayerAdmin(playerid) || TeamInfo[Leader] == playerid) {
- PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
- KillTimer(TeamInfo[End]);
- return endevent();
- }
- else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You need to be event manager to use this command");
- }
- CMD:tjoin(playerid,params[]) {
- if(TeamInfo[EStarted] == 1) {
- if(TeamInfo[Leader] == playerid) return SendClientMessage(playerid, red,"ERROR: You're event 'manager' not allowed to join it!");
- if(PTeam[playerid][InTeam] == 1) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You already in the team event!");
- if(TeamInfo[ELocked] == 1) return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: Event Already Started! no one able to join");
- new string[128];
- if(TeamInfo[ETeam] == 0) {
- format(PTeam[playerid][Teamn], 10,"red");
- PTeam[playerid][Team] = 0;
- TeamInfo[ETeam] = 1;
- PTeam[playerid][Color] = GetPlayerColor(playerid);
- SetPlayerColor(playerid,red);
- TeamInfo[RMembers] ++;
- }
- else if(TeamInfo[ETeam] == 1) {
- format(PTeam[playerid][Team], 10,"blue");
- PTeam[playerid][Team] = 1;
- TeamInfo[ETeam] = 0;
- PTeam[playerid][Color] = GetPlayerColor(playerid);
- SetPlayerColor(playerid,blue);
- TeamInfo[BMembers] ++;
- }
- ResetPlayerWeapons(playerid);
- TogglePlayerControllable(playerid,0);
- format(string,sizeof string,"%s Has Joined %s Team Event Team: %s!",pName(playerid),TeamInfo[EName],PTeam[playerid][Teamn]);
- SendClientMessageToAll(yellow,string);
- GetPlayerPos(playerid,PTeam[playerid][PX],PTeam[playerid][PY],PTeam[playerid][PZ]);
- PTeam[playerid][InTeam] = 1;
- format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
- TextDrawSetString(Textdraw55,string);
- TextDrawShowForPlayer(playerid, Textdraw55);
- SetTimerEx("UpdateText", 1000, 1, "i", playerid);
- if(PTeam[playerid][Team] == 0) SetPlayerPos(playerid,TeamInfo[REX],TeamInfo[REY],TeamInfo[REZ]);
- if(PTeam[playerid][Team] == 1) SetPlayerPos(playerid,TeamInfo[BEX],TeamInfo[BEY],TeamInfo[BEZ]);
- return 1;
- }
- else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: There are no team is running at the moment!");
- }
- CMD:texit(playerid,params[]) {
- if(PTeam[playerid][InTeam] == 1) {
- new string[128];
- format(string,sizeof string,"%s Has left %s Team Event Team: %s!",pName(playerid),TeamInfo[EName],PTeam[playerid][Teamn]);
- SendClientMessageToAll(COLOR_PINK,string);
- PlayerPlaySound(playerid,1057,0.0,0.0,0.0);
- SetPlayerColor(playerid,GetPlayerColor(playerid));
- PTeam[playerid][InTeam] = 0;
- TogglePlayerControllable(playerid,1);
- if(PTeam[playerid][Team] == 0) TeamInfo[RMembers] --;
- if(PTeam[playerid][Team] == 1) TeamInfo[BMembers] --;
- format(string,sizeof string,"Red Members: %d~n~Blue Members: %d",RMembers,BMembers);
- TextDrawSetString(Textdraw55,string);
- TextDrawHideForPlayer(playerid,Textdraw55);
- foreach(new i : Player) if(PTeam[i][InTeam] == 1) TextDrawShowForPlayer(i, Textdraw55);
- return SetPlayerPos(playerid,PTeam[playerid][PX],PTeam[playerid][PY],PTeam[playerid][PZ]);
- }
- else return SendClientMessage(playerid,COLOR_BRIGHTRED,"ERROR: You need to be in team event to exit from it!");
- }
- //====================================Functions=================================
- pName(playerid) {
- new pname[MAX_PLAYER_NAME+1];
- GetPlayerName(playerid, pname, sizeof(pname));
- return pname;
- }
- IsValidWeapon(weaponid)
- {
- if (weaponid > 0 && weaponid < 19 || weaponid > 21 && weaponid < 47) return 1;
- return 0;
- }
- //============================================================================//
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement