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;
}