#include #include #include // 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(); new gTeam[MAX_PLAYERS]; new GotFlag[MAX_PLAYERS]; new yellowteam; new greenteam; new yellowflag; new greenflag; new yellowhealth; new greenhealth; new cgreen; new cyellow; //--------------------------------------------------------- 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); 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); 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); 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); 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); } if( GotFlag[playerid] == 2 ) { GameTextForAll("~g~Green~w~ flag returned",5000,5); greenflag = CreatePickup(1578, 23, -114.0889,-105.1456,7.0074); } 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; }