rendered paste body#include <a_samp>
#include <core>
#include <float>
// Colors - START
#define COLOR_RED 0xAA3333AA
#define COLOR_GREEN 0x40FF40FF
#define COLOR_BLUE 0x4040FFFF
#define COLOR_CYAN 0x40FFFFFF
#define COLOR_PINK 0xDA70D6FF
#define COLOR_YELLOW 0xFFFF40FF
#define COLOR_WHITE 0xFFFFFFFF
#define COLOR_BLACK 0x000000FF
#define COLOR_GREY 0xBBBBBBFF
// Colors - END
// Team - START
#define TEAM_GREEN 1
#define TEAM_YELLOW 2
#define TEAM_GREEN_COLOR 0x40FF40FF
#define TEAM_YELLOW_COLOR 0xFFFF40FF
// Team - END
forward GameModeExitFunc();
forward SettingPlayerTeam();
forward MapIconGr(playerid);
forward MapIconYe(playerid);
new gTeam[MAX_PLAYERS];
new GotFlag[MAX_PLAYERS];
new yellowteam;
new greenteam;
new yellowflag;
new greenflag;
new yellowhealth;
new MapIconTimerYe;
new MapIconTimerGr;
new greenhealth;
new cgreen;
new cyellow;
new Float:x, Float:y, Float:z;
//---------------------------------------------------------
main()
{
print("\n----------------------------------");
print(" NeptoZ's Capture The Flag\n");
print("----------------------------------\n");
}
//---------------------------------------------------------
public OnGameModeInit()
{
new playerid;
SetGameModeText("[NeptoZ] CTF");
EnableStuntBonusForAll(0);
AllowAdminTeleport(1);
AllowInteriorWeapons(0);
ShowPlayerMarkers(0);
SetTeamCount( 2 );
SetWorldTime(00);
SetWeather(43);
// SKIN, SPAWN - START
// GREEN START
AddPlayerClass(105,-107.7675,-106.6642,7.0074,130.9620,24,150,4,1,31,300);
AddPlayerClass(106,-110.4492,-118.6866,3.1172,36.0211,29,400,33,100,22,150);
AddPlayerClass(107,-114.1903,-105.0866,3.1094,206.4527,27,200,5,1,32,150);
// GREEN END
// YELLOW START
AddPlayerClass(108,-45.1990,136.4585,6.9557,290.1602,30,200,25,100,23,100);
AddPlayerClass(109,-40.1891,147.4240,3.1172,198.6659,28,200,26,150,9,1);
AddPlayerClass(110,-40.3385,133.4245,3.1172,0.6374,34,100,24,150,32,150);
// YELLOW END
// SKIN, SPAWN - END
// OBJECTS START
CreateObject(17298,-111.979179,-110.681938,7.741795,0.000000,0.000000,349.000000); // Green base
CreateObject(17298,-40.638645,139.121780,7.690109,0.000000,0.000000,152.651840); // Yellow base
CreateObject(12918,-106.611633,-83.530326,2.090375,0.000000,0.000000,-6.000000); // Green block
CreateObject(12918,-45.109554,116.386749,2.100621,0.000000,0.000000,148.233520); // Yellow block
// OBJECTS END
// MAP ICON START
// Green Flag
SetPlayerMapIcon( playerid, 1, -114.0889,-105.1456,7.0074, 53, 0 );
// Yellow Flag
SetPlayerMapIcon( playerid, 2, -40.0324,133.0324,6.9557, 53, 0 );
// MAP ICON END
// PICKUPS START
yellowteam = CreatePickup(1239, 23, -44.4967,131.9184,3.1172);
greenteam = CreatePickup(1239, 23, -110.2855,-102.6964,3.1172);
yellowflag = CreatePickup(1577, 3, -40.0324,133.0324,6.9557);
greenflag = CreatePickup(1578, 3, -114.0889,-105.1456,7.0074);
greenhealth = CreatePickup(1240, 2, -111.4515,-107.6801,7.0074);
yellowhealth = CreatePickup(1240, 2, -42.2050,136.2808,6.9557);
// PICKUPS END
}
//---------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
// Help Command
if (strcmp("/help", cmdtext, true, 10) == 0) {
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] Welcome to NeptoZ's CTF Server.");
SendClientMessage(playerid, COLOR_WHITE, "[HELP] This is a CTF(Capture The Flag) Server. It's Yellow VS. Green");
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] Use /commands to get a list of all commands.");
SendClientMessage(playerid, COLOR_RED, "[INFO/IMPORTANT] Use /rules to get a list of the rules.");
return 1;
}
// Rules Command
if (strcmp("/rules", cmdtext, true, 10) == 0) {
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] Rules of NeptoZ's CTF Server.");
SendClientMessage(playerid, COLOR_RED, "[RULES] #1 NO Cheating!");
SendClientMessage(playerid, COLOR_RED, "[RULES] #2 NO Spawnkilling!");
SendClientMessage(playerid, COLOR_RED, "[RULES] #3 NO Bug abusing! (Report bugs on the forum)");
SendClientMessage(playerid, COLOR_RED, "[RULES] #4 ONLY English! Use /pm for other languages.");
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] Breaking these rules will result in: Warning / Kick / Temp. ban / Perm. ban.");
return 1;
}
// Commands Command
if (strcmp("/commands", cmdtext, true, 10) == 0) {
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] Commands of NeptoZ's TDM Server.");
SendClientMessage(playerid, COLOR_YELLOW,"[GENERAL] || /rules || /help || /commands || /register || /login");
SendClientMessage(playerid, COLOR_YELLOW, "[CHAT] /pm ID MSG || /me Text");
SendClientMessage(playerid, COLOR_YELLOW, "[OTHER] /afk || /back || /kill");
return 1;
}
// Teleport To Yellow Spawn
if (strcmp("/go yellow", cmdtext, true, 10) == 0) {
SetPlayerPos(playerid, -44.4967,131.9184,3.1172);
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You teleported to yellow teams spawn!");
return 1;
}
// Teleport To Green Spawn
if (strcmp("/go green", cmdtext, true, 10) == 0) {
SetPlayerPos(playerid, -110.2855,-102.6964,3.1172);
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You teleported to green teams spawn!");
return 1;
}
// Freeze the player so he can go AFK without getting killed
if (strcmp("/afk", cmdtext, true, 10) == 0) {
TogglePlayerControllable(playerid, 0); // Freezes the player
SetPlayerPos(playerid, -291.4121,2604.9607,63.2942); // Teleport the player away from the battle area
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You can now go AFK without losing your money and weapons.");
SendClientMessage(playerid, COLOR_BLUE, "[HINT] Type /back - When you are back. You won't lose your ammo and weapons.");
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] You are ONLY allowed to be AFK for 10 minutes. - If the server is full, all them there is AFK will get kicked.");
return 1;
}
// Unfreeze the player so he can go back and play
if (strcmp("/back", cmdtext, true, 10) == 0) {
TogglePlayerControllable(playerid, 1); // Unfreezes the player
if ( gTeam[playerid] == TEAM_YELLOW )
SetPlayerPos(playerid, -44.4967,131.9184,3.1172);
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You are now back and can go back and play! Good luck.");
SendClientMessage(playerid, COLOR_BLUE, "[HINT] Dont worry, you still got your weapons and ammo from before.");
if ( gTeam[playerid] == TEAM_GREEN )
SetPlayerPos(playerid, -110.2855,-102.6964,3.1172);
return 1;
}
// Show Driveby Allowed Message
if (strcmp("/driveby", cmdtext, true, 10) == 0) {
SendClientMessage(playerid, COLOR_GREEN, "[ALLOWED] Driveby IS allowed!");
return 1;
}
// Suicide command
if (strcmp("/kill", cmdtext, true, 10) == 0) {
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You died by /kill");
SetPlayerHealth(playerid, 0);
if( GotFlag[playerid] == 1 )
{
GameTextForAll("~y~Yellow~w~ flag returned!",5000,5);
yellowflag = CreatePickup(1577, 23, -40.0324,133.0324,6.9557);
}
if( GotFlag[playerid] == 2 )
{
GameTextForAll("~g~Green~w~ flag returned!",5000,5);
greenflag = CreatePickup(1578, 23, -114.0889,-105.1456,7.0074);
}
return 1;
}
// /me Command
if(!strcmp(cmdtext, "/me", true)) {
new str[256], pname[256];
GetPlayerName(playerid, pname, 256);
format(str, 256, "%s %s", pname, cmdtext[4]);
SendClientMessageToAll(COLOR_PINK, str);
return 1;
}
// Ammunation enter
if(!strcmp(cmdtext, "/enterammunation", true)) {
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] Comming soon. A bit bugged right now.");
return 1;
}
// Ammunation exit
if(!strcmp(cmdtext, "/exitammunation", true)) {
SetPlayerInterior(playerid, 0);
if ( gTeam[playerid] == TEAM_YELLOW )
SetPlayerPos(playerid, -44.4967,131.9184,3.1172);
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You exited the Ammunation shop!");
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] You're now back to the battle!");
if ( gTeam[playerid] == TEAM_GREEN )
SetPlayerPos(playerid, -110.2855,-102.6964,3.1172);
return 1;
}
return 1;
}
//---------------------------------------------------------
SetPlayerTeamFromClass(playerid, classid)
{
if (classid == 0)
{
gTeam[playerid] = TEAM_GREEN;
}
if (classid == 1)
{
gTeam[playerid] = TEAM_GREEN;
}
if (classid == 2)
{
gTeam[playerid] = TEAM_GREEN;
}
if (classid == 3)
{
gTeam[playerid] = TEAM_YELLOW;
}
if (classid == 4)
{
gTeam[playerid] = TEAM_YELLOW;
}
if (classid == 5)
{
gTeam[playerid] = TEAM_YELLOW;
}
}
//---------------------------------------------------------
public OnPlayerConnect(playerid)
{
GameTextForPlayer(playerid,"~w~Welcome!",1000,5);
new pName[MAX_PLAYER_NAME];
new string[48];
GetPlayerName(playerid, pName, sizeof(pName));
format(string, sizeof(string), "-> %s joined [NeptoZ] CTF.", pName);
SendClientMessageToAll(COLOR_GREY, string);
SendClientMessage(playerid, COLOR_GREEN, "[WELCOME] Welcome to NeptoZ's CTF Server. Forum: http://neptozctf.eamped.com");
SendClientMessage(playerid, COLOR_WHITE, "[HELP] Use /help - to get information about the server/gamemode.");
SetTimerEx("SettingPlayerTeam",10,1,"i",playerid);
return 1;
}
//---------------------------------------------------------
public OnPlayerPickUpPickup(playerid, pickupid)
{
if ( pickupid == yellowteam )
{
GameTextForPlayer(playerid,"~w~Team: ~y~Yellow",2000,5);
}
else if ( pickupid == greenteam )
{
GameTextForPlayer(playerid,"~w~Team: ~g~Green",2000,5);
}
else if ( pickupid == yellowflag && gTeam[playerid] == TEAM_YELLOW )
{
GameTextForPlayer(playerid, "~r~You can't steal your own flag!",5000,5);
DestroyPickup(pickupid);
yellowflag = CreatePickup(1577, 23, -40.0324,133.0324,6.9557);
GotFlag[playerid] = 0;
}
else if ( pickupid == greenflag && gTeam[playerid] == TEAM_GREEN )
{
GameTextForPlayer(playerid, "~r~You can't steal your own flag!",5000,5);
DestroyPickup(pickupid);
greenflag = CreatePickup(1578, 23, -114.0889,-105.1456,7.0074);
GotFlag[playerid] = 0;
}
else if ( pickupid == greenflag && gTeam[playerid] == TEAM_YELLOW )
{
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] You got the green flag, and got $1,000! Get it back to your base!");
GameTextForAll("~w~The ~g~green~w~ flag got ~r~stolen!",5000,5);
SetPlayerCheckpoint(playerid,-41.0088,138.2672,3.1172,1);
GivePlayerMoney(playerid, 1000);
MapIconTimerGr = SetTimerEx("MapIconGr", 500, 1, "i", playerid);
GetPlayerPos(playerid, x, y, z);
SetPlayerMapIcon(playerid, 3, x, y, z, 60 ,0);
GotFlag[playerid] = 2;
DestroyPickup(pickupid);
}
else if ( pickupid == yellowflag && gTeam[playerid] == TEAM_GREEN )
{
SendClientMessage(playerid, COLOR_YELLOW, "[INFO] You got the yellow flag, and got $1,000! Get it back to your base!");
GameTextForAll("~w~The ~y~yellow~w~ flag got ~r~stolen!",5000,5);
SetPlayerCheckpoint(playerid,-111.7409,-108.9421,3.1172,1);
GivePlayerMoney(playerid, 1000);
MapIconTimerYe = SetTimerEx("MapIconYe", 500, 1, "i", playerid);
GetPlayerPos(playerid, x, y, z);
SetPlayerMapIcon(playerid, 3, x, y, z, 62, 0);
GotFlag[playerid] = 1;
DestroyPickup(pickupid);
}
else if ( pickupid == greenhealth )
{
SetPlayerHealth(playerid, 100);
GameTextForPlayer(playerid,"You got healed!",5000,5);
}
else if ( pickupid == yellowhealth )
{
SetPlayerHealth(playerid, 100);
GameTextForPlayer(playerid,"You got healed!",5000,5);
}
return 1;
}
//---------------------------------------------------------
public OnPlayerEnterCheckpoint(playerid)
{
cgreen = IsPlayerInCheckpoint(playerid);
if ( cgreen && gTeam[playerid] == TEAM_YELLOW )
{
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You captured the green flag, and got $3,000!");
GameTextForAll("~y~Yellow~w~ team captured~n~ the ~g~green~w~ flag!",5000,5);
DisablePlayerCheckpoint(playerid);
KillTimer(MapIconTimerGr);
GivePlayerMoney(playerid, 3000);
RemovePlayerMapIcon(playerid, 3);
GotFlag[playerid] = 0;
greenflag = CreatePickup(1578, 23, -114.0889,-105.1456,7.0074);
}
cyellow = IsPlayerInCheckpoint(playerid);
if ( cyellow && gTeam[playerid] == TEAM_GREEN )
{
SendClientMessage(playerid, COLOR_GREEN, "[SUCCESS] You captured the yellow flag, and got $3,000");
GameTextForAll("~g~Green~w~ team captured~n~ the ~y~yellow~w~ flag!",5000,5);
DisablePlayerCheckpoint(playerid);
GivePlayerMoney(playerid, 3000);
KillTimer(MapIconTimerYe);
RemovePlayerMapIcon(playerid, 4);
GotFlag[playerid] = 0;
yellowflag = CreatePickup(1577, 23, -40.0324,133.0324,6.9557);
}
}
//---------------------------------------------------------
public OnPlayerRequestClass(playerid, classid)
{
SetPlayerPos(playerid, -127.9752,-195.2332,1.8853);
SetPlayerCameraPos(playerid, -131.2964,-195.3739,1.9071);
SetPlayerCameraLookAt(playerid, -131.2964,-195.3739,1.9071);
SetPlayerTeamFromClass(playerid, classid);
SetPlayerFacingAngle(playerid, 90.0);
return 1;
}
//---------------------------------------------------------
public OnPlayerDeath(playerid, killerid, reason)
{
GivePlayerMoney(killerid, 1000);
SendDeathMessage(killerid, playerid, reason);
SetPlayerScore(killerid, GetPlayerScore(playerid)+1);
GivePlayerMoney(killerid, 250);
if (gTeam[playerid] == gTeam[killerid])
{
SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
}
if( GotFlag[playerid] == 1 )
{
GameTextForAll("~y~Yellow~w~ flag returned",5000,5);
yellowflag = CreatePickup(1577, 23, -40.0324,133.0324,6.9557);
KillTimer(MapIconTimerYe);
}
if( GotFlag[playerid] == 2 )
{
GameTextForAll("~g~Green~w~ flag returned",5000,5);
greenflag = CreatePickup(1578, 23, -114.0889,-105.1456,7.0074);
KillTimer(MapIconTimerGr);
}
GotFlag[playerid] = 0;
return 1;
}
//---------------------------------------------------------
SetPlayerToTeamColor(playerid)
{
if (gTeam[playerid] == TEAM_GREEN)
{
SetPlayerColor(playerid, TEAM_GREEN_COLOR);
}
else if (gTeam[playerid] == TEAM_YELLOW)
{
SetPlayerColor(playerid, TEAM_YELLOW_COLOR);
}
}
//---------------------------------------------------------
public OnPlayerSpawn(playerid) {
SetPlayerToTeamColor(playerid);
ResetPlayerMoney(playerid);
DisablePlayerCheckpoint(playerid);
GotFlag[playerid] = 0;
return 1;
}
//---------------------------------------------------------
public SettingPlayerTeam()
{
for(new playerid; playerid < 200; playerid++)
SetPlayerTeam(playerid, gTeam[playerid]);
return 1;
}
//---------------------------------------------------------
public OnPlayerDisconnect(playerid, reason)
{
new pName[MAX_PLAYER_NAME];
new string[56];
GetPlayerName(playerid, pName, sizeof(pName));
if( GotFlag[playerid] == 1 )
{
SendClientMessageToAll(COLOR_RED, "Yellow Flag Returned!");
yellowflag = CreatePickup(1577, 23, -55.4926,69.6995,6.5278);
}
if( GotFlag[playerid] == 2 )
{
SendClientMessageToAll(COLOR_RED, "Green Flag Returned!");
greenflag = CreatePickup(1578, 23, -105.2316,-76.0822,6.6692);
}
switch(reason)
{
case 0: format(string, sizeof(string), "-> %s left [NeptoZ] CTF (Crashed) ", pName);
case 1: format(string, sizeof(string), "-> %s left [NeptoZ] CTF (Leaving) ", pName);
case 2: format(string, sizeof(string), "-> %s left [NeptoZ] CTF (Kicked) ", pName);
}
SendClientMessageToAll(COLOR_GREY, string);
return 1;
}
public MapIconGr(playerid)
{
new Float:X, Float:Y, Float:Z;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(playerid, X, Y, X);
SetPlayerMapIcon(i, 11, X,Y,Z,1,COLOR_GREEN);
}
}
}
public MapIconYe(playerid)
{
new Float:X, Float:Y, Float:Z;
for(new i=0;i<MAX_PLAYERS;i++)
{
if(IsPlayerConnected(i))
{
GetPlayerPos(playerid, X, Y, X);
SetPlayerMapIcon(i, 10, X,Y,Z,1,COLOR_YELLOW);
}
}
}