All pastes #405398 Raw Edit

Stuff

public text v1 · immutable
·published 2007-03-21 18:36 UTC
rendered paste body
/*
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
×               	                                         				  ×
×     Capture The Flag / Bombinrun				                              ×
×	                         		  										  ×
×      		                                                   				  ×
×     											By: [SiN]Sneaky			      ×
×                                                                             ×
×××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
*/

#include <a_samp>
#include <core>
#include <float>
#include <time>
#include <file>

#define MAX_SCORE 20 //max score for when the round's over

#define TEAM_AREA51 1
#define TEAM_TERRORISTS 2
#define TEAM_AREA51_COLOR 0x008040FF
#define TEAM_TERRORISTS_COLOR 0xD7061CFF
#define COLOR_LGREEN 0x9EF764FF
#define COLOR_DGREY 0x747474FF
#define CHECKPOINT_FLAG 1
#define CHECKPOINT_NONE 0
#define COLOR_WHITE 0xFFFFFFAA
#define line(%1,%2) for(new i=0; i<86; i++) msg[i] = ' '; msg[2] = %1; msg[xmax] = %2; for(new i=3; i<xmax; i++) msg[i] = 196; print(msg)
#define Frame(%1)   xmax = strlen(%1)+3; line(218,191); msg = %1; strins(msg,"   ",0); msg[2] = 179; msg[xmax] = 179; print(msg); line(192,217)

new msg[255],xmax;
new gTeam[MAX_PLAYERS];
new gPlayerClass[MAX_PLAYERS];
new gPlayerCheckpointStatus[MAX_PLAYERS];
new Float:cwx, Float:cwy, Float:cwz;

forward CheckpointReset();
forward CheckpointReset();
forward DropFlag(playerid);



main()
{
	print(" ");
	Frame(" Capture The Flag Made by: [SiN]Sneaky");
	print(" ");
}


public PlayerToPoint(Float:radi, playerid, Float:x, Float:y, Float:z){
	new Float:oldposx, Float:oldposy, Float:oldposz;
	new Float:tempposx, Float:tempposy, Float:tempposz;
	GetPlayerPos(playerid, oldposx, oldposy, oldposz);
	tempposx = (oldposx -x);
	tempposy = (oldposy -y);
	tempposz = (oldposz -z);
	if (((tempposx < radi) && (tempposx > -radi)) && ((tempposy < radi) && (tempposy > -radi)) && ((tempposz < radi) && (tempposz > -radi)))
	{
	return 1;
	}
	return 0;
}

public OnEnterP(){
	for(new i=0; i<MAX_PLAYERS; i++){
	if(gTeam[i] == TEAM_AREA51)
	if (PlayerToPoint(3, i,2079.4526,-1194.3068,23.8623) && GetPlayerState(i) == 1){
	GameTextForAll(" ~g~ TEAM 1 delivered the moneybag +1 SCORE",1000,4);
	CheckpointReset();
	}
	}
	return 1;
}

public OnEnterP2(){
	for(new i=0; i<MAX_PLAYERS; i++){
	if(gTeam[i] == TEAM_TERRORISTS)
    if (PlayerToPoint(3, i,1832.2650,-1180.8708,23.6343) && GetPlayerState(i) == 1){
	GameTextForAll(" ~r~ TEAM 2 delivered the moneybag +1 SCORE",1000,4);
	CheckpointReset();
	}
	}
   return 1;
}





public CheckpointReset(){
	for(new i = 0; i <= MAX_PLAYERS; i++){
	if(IsPlayerConnected(i) == 1){
	DisablePlayerCheckpoint(i);
	gPlayerCheckpointStatus[i] = CHECKPOINT_NONE;
	}
	}

}

//DM Final Score Message by yellowblood
public post_winners(winnerid)
{
	new i;
	//paralize all
	for(i = 0; i < MAX_PLAYERS ; i++)
	    if(IsPlayerConnected(i) && !IsPlayerAdmin(i))
	        TogglePlayerControllable(i,0);

	new string[256];
	new winners[3];  //3 first players' ids
	winners[0] = winnerid; //first place
	winners[1] = 255;      //second place
	winners[2] = 255;      //third place
	printf("1. %d 2. %d 3. %d", winners[0], winners[1], winners[2]);
	new winames[3][MAX_PLAYER_NAME]; //names of the winners

	GetPlayerName(winners[0], winames[0], MAX_PLAYER_NAME); //winner name

	new x = -100;
	for(i = 0; i < MAX_PLAYERS ; i++) //finding 2nd place.
	{
	    if (IsPlayerConnected(i) && GetPlayerScore(i) > x && i != winners[0])
	    {
	        x = GetPlayerScore(i);
	        winners[1] = i;
		}
	}
	if(winners[1] != 255) GetPlayerName(winners[1], winames[1], MAX_PLAYER_NAME); //if found 2nd place, get his name
	else winames[1] = "---";                                      //if not, just write ---

	x = -100;
	for(i = 0; i < MAX_PLAYERS ; i++) //finding 3rd place.
	{
	    if (IsPlayerConnected(i) && GetPlayerScore(i) > x && i != winners[0] && i != winners[1])
	    {
	        x = GetPlayerScore(i);
	        winners[2] = i;
		}
	}
	if(winners[2] != 255) GetPlayerName(winners[2], winames[2], MAX_PLAYER_NAME); //if found 3rd place, get his name
	else winames[2] = "---";                                      //if not, just write ---

	format(string, sizeof(string),"~w~1. ~b~%s   ~y~(%d)~n~~w~2. ~b~%s   ~y~(%d)~n~~w~3. ~b~%s   ~y~(%d)~n~", winames[0], GetPlayerScore(winners[0]), winames[1], GetPlayerScore(winners[1]), winames[2],GetPlayerScore(winners[2]));
    GameTextForAll(string,16000,3);
    SetTimer("GameModeExitFunc", 15000, 0);
}



public OnGameModeInit()
{
	print("GameModeInit()");
	SetGameModeText("CTF:BR");
	ShowPlayerMarkers(1);
	SetWorldTime(20);
	SetTimer("OnEnterP",3000,1);
	SetTimer("OnEnterP2",3000,1);
	AddStaticPickup(1550, 2 ,1970.2009,-1200.3075,25.6319);
	AddStaticPickup(1239, 2 ,1832.2650,-1180.8708,23.6343);
	AddStaticPickup(1239, 2 ,2079.4526,-1194.3068,23.8623);
	//
	AddPlayerClass(197,2060.0630,-1196.2120,23.8797,92.7667,0,0,0,0,0,0); // spawn1
	AddPlayerClass(199,2059.5825,-1204.1077,23.9356,91.0303,0,0,0,0,0,0); // spawn2
	AddPlayerClass(130,2059.5964,-1185.9155,23.8336,89.5420,0,0,0,0,0,0); // spawn3
	//
	AddPlayerClass(167,1851.7975,-1173.6653,23.8281,266.7617,0,0,0,0,0,0); // spawn4
	AddPlayerClass(205,1852.6749,-1196.1821,22.9963,269.2423,0,0,0,0,0,0); // spawn 5
	AddPlayerClass(155,1855.3668,-1216.5571,19.3185,257.8317,0,0,0,0,0,0); // spawn6
	return 1;
}



public OnPlayerRequestClass(playerid, classid) {
  	SetPlayerTeamFromClass(playerid, classid);
  	SetupPlayerForClassSelection(playerid);
  	gPlayerClass[playerid] = classid;
  	switch (classid) {
  	case 0,1,2: GameTextForPlayer(playerid," Team 1", 500,3);
  	case 3,4,5: GameTextForPlayer(playerid," Team 2",500,3);
	}
	return 1;
}



public SetupPlayerForClassSelection(playerid)
{
	if(gTeam[playerid] == TEAM_AREA51) {
	SetPlayerInterior(playerid,0);
	SetPlayerPos(playerid, 2075.1614,-1205.1038,23.7707);
	SetPlayerFacingAngle(playerid, 265.6794);
	SetPlayerCameraPos(playerid, 2080.0068,-1205.9310,23.9382);
	SetPlayerCameraLookAt(playerid, 2075.1614,-1205.1038,23.7707);
	}
  	if(gTeam[playerid] == TEAM_TERRORISTS) {
	SetPlayerInterior(playerid,0);
	SetPlayerPos(playerid,1877.2230,-1151.7814,23.8885);
	SetPlayerFacingAngle(playerid, 66.7370);
	SetPlayerCameraPos(playerid,1873.2642,-1149.8162,23.8826);
	SetPlayerCameraLookAt(playerid,1877.2230,-1151.7814,23.8885);
	SetupPlayerForClassSelection(playerid);
	}
	return;
}

public SetPlayerTeamFromClass(playerid, classid) {
	if(classid == 0 || classid == 1 || classid == 2) {
	gTeam[playerid] = TEAM_AREA51;
	}else if(classid == 3 || classid == 4 || classid == 5) {
 	gTeam[playerid] = TEAM_TERRORISTS;
	}
}

public SetPlayerToTeamColour(playerid) {
	if(gTeam[playerid] == TEAM_AREA51) {
	SetPlayerColor(playerid,TEAM_AREA51_COLOR);
	}else if(gTeam[playerid] == TEAM_TERRORISTS) {
 	SetPlayerColor(playerid,TEAM_TERRORISTS_COLOR);
	}
}

public OnGameModeExit()
{
	GameModeExit();
	return 1;
}

public OnPlayerConnect(playerid)
{
    SetPlayerCheckpoint(playerid, 1970.2009,-1200.3075,25.6319, 1.0);
	printf("OnPlayerConnect(%d)", playerid);
	return 1;
}

public OnPlayerDisconnect(playerid)
{
	printf("OnPlayerDisconnect(%d)", playerid);
	return 1;
}

public OnPlayerSpawn(playerid)
{
    SetPlayerToTeamColour(playerid);
    if(gTeam[playerid] == TEAM_AREA51) {
	GivePlayerWeapon(playerid, 26, 25000);
	GivePlayerWeapon(playerid, 37, 25000);
	GivePlayerWeapon(playerid, 32, 25000);
	GivePlayerWeapon(playerid, 38, 25000);
	}
	else if(gTeam[playerid] == TEAM_TERRORISTS) {
	GivePlayerWeapon(playerid, 26, 25000);
	GivePlayerWeapon(playerid, 37, 25000);
	GivePlayerWeapon(playerid, 32, 25000);
	GivePlayerWeapon(playerid, 38, 25000);
	}
	SetPlayerInterior(playerid,0);
	return 1;
}

//DM Messages by yellowblood
public OnPlayerDeath(playerid, killerid, reason)
{
	printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason);
	SendDeathMessage(killerid, playerid, reason);

	new pstring[256]; //player message

 	if (!IsPlayerConnected(killerid)) //if a player kills himself, he gets -1 point.
	{
	    SetPlayerScore(playerid, GetPlayerScore(playerid) -1);
	    GameTextForPlayer(playerid, "~r~You died.", 4000, 3);
	}
	else //give killer 1 point, send killer and player a nice cool message
	{
    	SetPlayerScore(killerid, GetPlayerScore(killerid) + 1);

		//message to killer
		new kstring[256]; //killer message
		new pname[MAX_PLAYER_NAME];   //player name
		GetPlayerName(playerid, pname, sizeof(pname));
		format(kstring, sizeof(kstring), "~b~You owned %s",pname);
		GameTextForPlayer(killerid, kstring, 4000, 3);

		//message to player
		new kname[MAX_PLAYER_NAME];   //killername
       	GetPlayerName(killerid, kname, sizeof(kname));
		format(pstring, sizeof(pstring), "~r~You got owned by %s",kname);
		GameTextForPlayer(playerid, pstring, 4000, 3);
		DropFlag(playerid);


		if (GetPlayerScore(killerid) >= MAX_SCORE) //max points reached - end of round
		{
		    post_winners(killerid);
		}
	}

//    printf("does it work? NO!");
	return 1;
}




/*	public OnPlayerDeath(playerid, killerid, reason)
	{
	new name[MAX_PLAYER_NAME];
	new string[256];
	new deathreason[20];
	GetPlayerName(playerid, name, sizeof(name));
	GetWeaponName(reason, deathreason, 20);
	if (killerid == INVALID_PLAYER_ID) {
 	switch (reason) {
	case WEAPON_DROWN:
	{
 	format(string, sizeof(string), "> %s drowned <)", name);
 	}
	default:
	{
 	if (strlen(deathreason) > 0) {
	format(string, sizeof(string), "> %s died (%s) <", name, deathreason);
	} else {
 	format(string, sizeof(string), "> %s died <", name);
	}
	}
	}
	}else {
	new killer[MAX_PLAYER_NAME];
	GetPlayerName(killerid, killer, sizeof(killer));
	if (strlen(deathreason) > 0) {
	format(string, sizeof(string), "> %s murdered %s (%s) <", killer, name, deathreason);
	DropFlag(playerid);
	} else {
	format(string, sizeof(string), "> %s murdered %s <", killer, name);
	}
	}
	SendClientMessageToAll(COLOR_LGREEN, string);
 	return 1;
	}
*/

public OnVehicleSpawn(vehicleid)
{
	printf("OnVehicleSpawn(%d)", vehicleid);
	return 1;
}

public OnVehicleDeath(vehicleid, killerid)
{
	printf("OnVehicleDeath(%d, %d)", vehicleid, killerid);
	return 1;
}

public OnPlayerText(playerid,text[])
{
  	if(text[0] == '@') {
    new name[24], string[256];
    GetPlayerName(playerid, name, 24);
    format(string, sizeof(string), "[TEAM] %s: %s", name, text[1]);
    for(new i = 0; i < MAX_PLAYERS; i++) {
    if(IsPlayerConnected(i)) {
    if(gTeam[i] == gTeam[playerid])
    SendClientMessage(i, GetPlayerColor(playerid), string);
    }
    }
    return 0;
    }
    return 1;
}

	public OnPlayerCommandText(playerid, cmdtext[])
	{
	if(strcmp(cmdtext, "/me", true, 3)==0) {
	new pname[24], string[256];
	GetPlayerName(playerid, pname, 24);
	format(string, 256, "* %s %s", pname, cmdtext[4]);
	SendClientMessageToAll(COLOR_WHITE, string);
	return 1;
	}
	return 0;
	}

public OnPlayerInfoChange(playerid)
{
	printf("OnPlayerInfoChange(%d)");
	return 1;
}

public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger)
{
	printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger);
	return 1;
}

public OnPlayerExitVehicle(playerid, vehicleid)
{
	printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid);
	return 1;
}

public OnPlayerStateChange(playerid, newstate, oldstate)
{
	printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate);
	return 1;
}



public OnPlayerEnterCheckpoint(playerid)
{
	if(gTeam[playerid] == TEAM_AREA51) {
	CheckpointReset();
	GameTextForPlayer(playerid, " ~r~ bring the bag to the enemy's base", 5000, 4);
	new pname[24], string[256];
	GetPlayerName(playerid, pname, 24);
	format(string, 256, "TEAM 1 %s Got The money Bag", pname);
	SendClientMessageToAll(COLOR_LGREEN, string);
	SetPlayerCheckpoint(playerid, 1832.2650,-1180.8708,23.6343, 1.0);
	}
	else if(gTeam[playerid] == TEAM_TERRORISTS) {
	CheckpointReset();
	GameTextForPlayer(playerid, " ~r~ bring the bag to the enemy's base", 5000, 4);
	new pname[24], string[256];
	GetPlayerName(playerid, pname, 24);
	format(string, 256, "TEAM 2 %s Got The money Bag", pname);
	SendClientMessageToAll(COLOR_LGREEN, string);
	SetPlayerCheckpoint(playerid, 2079.4526,-1194.3068,23.8623, 1.0);
	}
	return 1;
}



public OnPlayerLeaveCheckpoint(playerid)
{
	printf("OnPlayerLeaveCheckpoint(%d)", playerid);
	return 1;
}



public DropFlag(playerid)
{
	new pname[24], string[256];
	GetPlayerName(playerid, pname, 24);
	format(string, 256, "~~~~ %s Dropped The Moneybag ~~~~", pname);
	SendClientMessageToAll(COLOR_LGREEN, string);
	GetPlayerPos(playerid, cwx, cwy, cwz);
	for(new i = 0; i <= MAX_PLAYERS; i++){
	if (IsPlayerConnected(i)){
	SetPlayerCheckpoint(i,cwx,cwy,cwz, 1.0);
	gPlayerCheckpointStatus[i] = CHECKPOINT_FLAG;
	}
	}
	return 1;
}