All pastes #828879 Raw Edit

Area 51 Break-Out V1.1

public text v1 · immutable
#828879 ·published 2007-12-22 20:08 UTC
rendered paste body
/******************************************************************************/
/*                                                                            */
/*                    [FR]Team[H2O] © All rights reserved                     */
/*                                                                            */
/*                              Area 51 Break-Out                             */
/*                                                                            */
/*                               By UrbanGhetto                               */
/*                                                                            */
/*                                   V1.1                                     */
/*                                                                            */
/******************************************************************************/



#include <a_samp>



#define TEAM_ATTACK 1

#define TEAM_DEFENCE 2



#define CHECKPOINT_NONE 0

#define CHECKPOINT_PLANE 1

#define CHECKPOINT_AREA51 2

#define DEFENCE 1

#define ATTACK 1


#define DEFENCE_WIN 0

#define ATTACK_WIN 1



#define COLOR_GREY 0xAFAFAFAA

#define COLOR_GREEN 0x33AA33AA

#define COLOR_RED 0xAA3333AA

#define COLOR_YELLOW 0xFFFF00AA

#define green 0x33FF33AA

#define red 0xFF0000AA


forward DEFENCEWin();

forward GameModeExitFunc();


new gTeam[MAX_PLAYERS];

new gPlayerClass[MAX_PLAYERS];

new gPlayerCheckpointStatus[MAX_PLAYERS];

new gRoundTimer;

new pickup1;

new Object1;

new ProjectPicker[MAX_PLAYERS]=0;

new UnknowPicking[MAX_PLAYERS]=0;

new IsProjectPicked=0;

//new gRoundTime = 1200000;					// Round time - 20 mins

//new gRoundTime = 900000;					// Round time - 15 mins

new gRoundTime = 600000;					// Round time - 10 mins

//new gRoundTime = 300000;					// Round time - 5 mins

//new gRoundTime = 120000;					// Round time - 2 mins

//new gRoundTime = 60000;					// Round time - 1 min


//---------------------------------------------------------


public OnGameModeInit(){

	SetGameModeText("Area 51 Break-Out V1.1");

    ShowPlayerMarkers(0);
    
    // ShowNameTags(0);

	SetWorldTime(0);

//------------------------------------------------------------------------------
	//Truck
    AddStaticVehicle(433,93.9946,1920.4595,18.4924,89.7955,43,0);

	// ATTACK team

	AddPlayerClass(111,315.4792,984.1290,1959.1129,353.5, 3, 0, 23, 1000, 25, 100);



	// DEFENCE team

	AddPlayerClass(287,245.1233,1859.1162,14.0840,358.717, 4, 0, 32, 1000, 31, 5000); // Army

	AddPlayerClass(70,271.6828,1873.8666,8.7578,229.4508, 4, 0, 24, 1000, 32, 1000); // Lab

	// Project
	
	pickup1 = CreatePickup(1210,15,268.5821,1883.8224,-30.0938);
	
	Object1=CreateObject(1210,0,0,0,0,0,0);
    

	/// Weapons

	
	AddStaticPickup(1242, 15, 244.5762,1861.7111,17.9213);

	AddStaticPickup(344, 15, 286.3907,1815.6653,1.0078);
	
	AddStaticPickup(1240, 15, 268.8547,1889.6233,-22.4219);
	
	/// Parachutes in plane

	AddStaticPickup(371, 15, 319.3416, 1020.7169,1950.6696);

	AddStaticPickup(371, 15, 312.6138, 1020.7346,1950.6655);

	//AddStaticPickup(370, 15, 268.5821, 1883.8224, -30.0938); // jetpack

	gRoundTimer = SetTimer("DEFENCEWin", gRoundTime, 0);

	return 1;

}





//---------------------------------------------------------



public DEFENCEWin() {

	EndTheRound(DEFENCE_WIN);

}



//---------------------------------------------------------



public OnPlayerConnect(playerid){

	new message[127];
	GetPlayerName(playerid, message, sizeof(message));
	format(message,sizeof(message), "%s (ID: %d) has joined the Server.", message, playerid);
	for(new i = 0; i < MAX_PLAYERS; i++) {
	    if(IsPlayerConnected(i) && playerid != i) {
	    SendClientMessage(i, COLOR_GREY, message);
	    }
	}

	GameTextForPlayer(playerid,"~w~SA:MP Area51 Break-out!",4000,3);

	SetPlayerColor(playerid,COLOR_GREY);
	
	UnknowPicking[playerid]=1;

	return 1;

}

public OnPlayerDisconnect(playerid, reason){
	
	if(ProjectPicker[playerid]==1){

	ProjectPicker[playerid]=0;

	new Float:X,Float:Y,Float:Z;
	GetPlayerPos(playerid,X,Y,Z);
	
	DestroyPickup(pickup1);

	pickup1 = CreatePickup(1210,15,X,Y,Z);
	
    DestroyObject(Object1);

	IsProjectPicked=0;

	for (new p=0 ; p<MAX_PLAYERS ; p++){
    if (IsPlayerConnected (p)){

    SetPlayerMapIcon(p, 0, X,Y,Z, 19, 0);

    }
    }

	}
	
	new message[127];
	GetPlayerName(playerid, message, sizeof(message));
	format(message,sizeof(message), "%s (ID: %d) has left the server", message, playerid);
	switch(reason) {
	    case 0: format(message,sizeof(message), "%s. (Timeout)", message);
	    case 1: format(message,sizeof(message), "%s. (Leaving)", message);
	    case 2: format(message,sizeof(message), "%s. (Kicked)", message);
	}
	for(new i = 0; i < MAX_PLAYERS; i++) {
	if(IsPlayerConnected(i) && playerid != i) {
	SendClientMessage(i, COLOR_GREY, message);
	}
	}
    return 1;
}
//---------------------------------------------------------



SetupPlayerForClassSelection(playerid)

{

	SetPlayerInterior(playerid,9);

	SetPlayerFacingAngle(playerid,0.0);

	SetPlayerPos(playerid,315.7802,972.0253,1961.8705);

	SetPlayerCameraPos(playerid,315.7802,975.0253,1961.8705);

	SetPlayerCameraLookAt(playerid,315.7802,972.0253,1961.8705);

	return;

}



//---------------------------------------------------------



SetPlayerTeamFromClass(playerid, classid) {

	if(classid == 0) {

		gTeam[playerid] = TEAM_ATTACK;

	} else if(classid == 1 || classid == 2) {

	    gTeam[playerid] = TEAM_DEFENCE;

	}

}



//---------------------------------------------------------



public OnPlayerRequestClass(playerid, classid)

{

    PlayerPlaySound(playerid, 1183, 0, 0, 0); //On lis le son
    
	SetPlayerTeamFromClass(playerid, classid);

	SetupPlayerForClassSelection(playerid);

	gPlayerClass[playerid] = classid;

	switch (classid) {

		case 0:

		    {

				GameTextForPlayer(playerid, "~r~Attack", 1000, 3);

			}

	    case 1, 2:

	        {

				GameTextForPlayer(playerid, "~g~Defence", 1000, 3);

			}

	}

	return 1;

}



//---------------------------------------------------------



public OnPlayerSpawn(playerid){

    if(UnknowPicking[playerid]==1 && IsProjectPicked==0){

    SetPlayerMapIcon(playerid, 0, 268.5821,1883.8224,-30.0938, 19, 0);
    
    }else if(UnknowPicking[playerid]==1 && IsProjectPicked==1){
    
    // ?
    
    }
    
    UnknowPicking[playerid]=0;

    PlayerPlaySound(playerid, 1186, 0, 0, -100); //On stop le son

	SetPlayerToTeamColour(playerid);

	SetPlayerWorldBounds(playerid, 388.6190, -7.9993, 2147.0618, 1655.8849);

	switch (gPlayerClass[playerid]) {

	    case 0:

	        {

			 	gPlayerCheckpointStatus[playerid] = CHECKPOINT_PLANE;

			 	SetPlayerCheckpoint(playerid,315.7353,1035.6589,1945.1191,5);

				SetPlayerInterior(playerid,9);

				GameTextForPlayer(playerid, "Jump of the plane by the ~r~ramp", 40000, 5);

			}

	    case 1, 2:

	        {

			 	gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;

				GameTextForPlayer(playerid, "Defend the ~r~area 51", 2000, 5);

				SetPlayerInterior(playerid,0);

			}
			

	}

	return 1;

}



//---------------------------------------------------------



SetPlayerToTeamColour(playerid) {

	if(gTeam[playerid] == TEAM_ATTACK) {

		SetPlayerColor(playerid,COLOR_RED); // Red

	} else if(gTeam[playerid] == TEAM_DEFENCE) {

	    SetPlayerColor(playerid,COLOR_GREEN); // Green

	}

}



//---------------------------------------------------------



public OnPlayerEnterCheckpoint(playerid) {

	switch (gPlayerCheckpointStatus[playerid]) {

		case CHECKPOINT_PLANE:

		    {

	            GameTextForPlayer(playerid, "Steal the ~r~project", 2000, 5);

	            SetPlayerInterior(playerid,0);

	            SetPlayerPos(playerid, 239.5148, 1813.7039, 500.6836);
	            
	            DisablePlayerCheckpoint(playerid);

			}

		case CHECKPOINT_AREA51:

		    {

		        DisablePlayerCheckpoint(playerid);

		        gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;

		        EndTheRound(ATTACK_WIN);

		        
		    }
		    

  		default:

	        {

				DisablePlayerCheckpoint(playerid);

	        }

	}

	return 1;

}



//---------------------------------------------------------



public OnPlayerDeath(playerid, killerid, reason){

	if (killerid != INVALID_PLAYER_ID) {



		if (gTeam[playerid] == gTeam[killerid]) {

			SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);

		}

		else {

			SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);

		}

	}

	SendDeathMessage(killerid, playerid, reason);

	DisablePlayerCheckpoint(playerid);

	gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE;
	
	SetPlayerColor(playerid,COLOR_GREY);
	
	if(ProjectPicker[playerid]==1){
	
	SetPlayerColor(playerid,COLOR_RED);
	
	ProjectPicker[playerid]=0;
	
	new Float:X,Float:Y,Float:Z;
	GetPlayerPos(playerid,X,Y,Z);
	
	DestroyPickup(pickup1);
	
	pickup1 = CreatePickup(1210,15,X,Y,Z);
	
	DestroyObject(Object1);

	for (new p=0 ; p<MAX_PLAYERS ; p++){
    if (IsPlayerConnected (p)){

    SetPlayerMapIcon(p, 0, X,Y,Z, 19, 0);

    }
    }
	
	}
 	return 1;

}

//---------------------------------------------------------



EndTheRound(winner) {

	switch (winner) {

	    case ATTACK_WIN:

	    {
	    for (new p=0 ; p<MAX_PLAYERS ; p++){
	    if (IsPlayerConnected (p)){

	    PlayerPlaySound(p, 1185, 0, 0, 0);

	    }
	    }
            
	    GameTextForAll("~r~attack ~w~win !", 2000, 5);
	    
	    DestroyObject(Object1);

	    KillTimer(gRoundTimer);
	    
	    }

	    case DEFENCE_WIN:

	    {
	    
	    for (new p=0 ; p<MAX_PLAYERS ; p++){
	    if (IsPlayerConnected (p)){

	    PlayerPlaySound(p, 1185, 0, 0, 0);

	    }
	    }

	    GameTextForAll("~g~Defence ~w~win !", 2000, 5);
	    
	    DestroyPickup(pickup1);

	    }

	}

	SetTimer("GameModeExitFunc", 5000, 0);

}



//---------------------------------------------------------



public GameModeExitFunc()

{

	GameModeExit();

}
//------------------------------------------------------------

public OnPlayerPickUpPickup(playerid, pickupid){

if ( pickupid == pickup1 ){

if(gTeam[playerid] == TEAM_ATTACK) {

ProjectPicker[playerid]=1;

IsProjectPicked=1;

DestroyPickup(pickup1);

Object1=CreateObject(1210,0,0,0,0,0,0);

AttachObjectToPlayer(Object1,playerid,0,0,1.5,0,0,0);

SendClientMessage(playerid, COLOR_YELLOW, "Bring Project in the truck !");

SendClientMessage(playerid, COLOR_YELLOW, "/Eject to launch project.");

GameTextForAll("~r~Project ~w~was stolen !", 5000, 5);

SetPlayerCheckpoint(playerid,100.5595,1920.3695,18.2771,5);//Checkpoint Camion

SetPlayerColor(playerid, 0xFF0000AA);

gPlayerCheckpointStatus[playerid] = CHECKPOINT_AREA51;

for (new p=0 ; p<MAX_PLAYERS ; p++){
if (IsPlayerConnected (p)){

RemovePlayerMapIcon(p,0);

}
}
}


else if(gTeam[playerid] == TEAM_DEFENCE) {

DestroyPickup(pickup1);

pickup1 = CreatePickup(1210,15,268.5821,1883.8224,-30.0938);

GameTextForAll("~r~Projet ~w~was respawner", 4000, 5);

IsProjectPicked=0;

for (new p=0 ; p<MAX_PLAYERS ; p++){
if (IsPlayerConnected (p)){

RemovePlayerMapIcon(p,0);

SetPlayerMapIcon(p, 0, 268.5821,1883.8224,-30.0938, 19, 0);

}
}

}

}
return 1;
}

public OnPlayerCommandText(playerid, cmdtext[]){

if(strcmp(cmdtext,"/kill", true)==0){
SetPlayerHealth(playerid,0);
return 1;
}

if (strcmp (cmdtext, "/spawn", true) ==0) {
SpawnPlayer(playerid);
return 1 ;
}

if (strcmp (cmdtext, "/eject", true) ==0) {
if(ProjectPicker[playerid]==1){
new Float:X,Float:Y,Float:Z;
GetPlayerPos(playerid,X,Y,Z);
pickup1 = CreatePickup(1210,15,X,Y+2,Z);
DestroyObject(Object1);
SetPlayerColor(playerid,COLOR_RED);
DisablePlayerCheckpoint(playerid);
for (new p=0 ; p<MAX_PLAYERS ; p++){
if (IsPlayerConnected (p)){
SetPlayerMapIcon(p, 0, X,Y+2,Z, 19, 0);
}
}
ProjectPicker[playerid]=0;
}else{
SendClientMessage(playerid,red,"You don't have the project.");
}
return 1 ;
}

if (strcmp (cmdtext, "/t", true, 2) ==0) {

new streptocoque [256], pname [256] ;

GetPlayerName (playerid, pname, 256) ;

for(new i = 0; i < MAX_PLAYERS; i ++) {
if(IsPlayerConnected(i)) {
if (gTeam[i] == TEAM_ATTACK) {
format (streptocoque, 256, "Attacker %s: %s ", pname, cmdtext [3]) ;
SendClientMessage(i, COLOR_RED, streptocoque);
}else if(gTeam[i] == TEAM_DEFENCE){
format (streptocoque, 256, "Defender %s: %s ", pname, cmdtext [3]) ;
SendClientMessage(i, COLOR_GREEN, streptocoque);
}
}
}
return 1;
}

if (strcmp("/gmx", cmdtext, true) == 0 && IsPlayerAdmin(playerid) == 1) {
SendClientMessage(playerid,0xFF0000AA, "> /Gmx (Winner)");
return 1;
}

if (strcmp("/gmx defence", cmdtext, true) == 0 && IsPlayerAdmin(playerid) == 1) {
EndTheRound(DEFENCE_WIN);
return 1;
}

if (strcmp("/gmx attack", cmdtext, true) == 0 && IsPlayerAdmin(playerid) == 1) {
EndTheRound(ATTACK_WIN);
return 1;
}

return 0;
}