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