#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 cgreen; new cyellow; //--------------------------------------------------------- main() { print("\n----------------------------------"); print(" NeptoZ's Capture The Flag\n"); print("----------------------------------\n"); } //--------------------------------------------------------- public OnGameModeInit() { new playerid; SetGameModeText("[NeptoZ] CTF"); DisableInteriorEnterExits(); EnableStuntBonusForAll(0); AllowAdminTeleport(1); AllowInteriorWeapons(0); ShowPlayerMarkers(0); SetTeamCount( 2 ); // SKIN, SPAWN - START // GREEN START AddPlayerClass(105,-99.4409,-76.2211,3.3020,125.0554,24,150,4,1,31,300); AddPlayerClass(106,-99.4409,-76.2211,3.3020,125.0554,29,400,33,100,22,150); AddPlayerClass(107,-99.4409,-76.2211,3.3020,125.0554,27,200,5,1,32,150); // GREEN END // YELLOW START AddPlayerClass(108,-60.4968,71.6842,3.1606,291.4136,30,200,25,100,23,100); AddPlayerClass(109,-60.4968,71.6842,3.1606,291.4136,28,200,26,150,16,50); AddPlayerClass(110,-60.4968,71.6842,3.1606,291.4136,34,100,24,150,37,3000); // YELLOW END // SKIN, SPAWN - END // OBJECTS START CreateObject(12919,-107.519813,-88.608032,2.294207,0.000000,0.000000,79.000000); CreateObject(12919,-51.156295,82.002899,2.152791,0.000000,0.000000,251.000000); // OBJECTS END // MAP ICON START SetPlayerMapIcon( playerid, 1, -55.4926,69.6995,6.5278, 53, 0 ); SetPlayerMapIcon( playerid, 2, -105.2316,-76.0822,6.6692, 53, 0 ); // MAP ICON 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_RED, "[RULES] #5 If you find a way to get out of the farm, dont go there. Stay INSIDE. Report it on the forum!"); 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, 2002.7592,-2426.9822,13.5469); SendClientMessage(playerid, COLOR_GREEN, "[SUCCES] You teleported to yellow teams spawn!"); return 1; } // Teleport To Green Spawn if (strcmp("/go green", cmdtext, true, 10) == 0) { SetPlayerPos(playerid, 1460.3425,-2634.7515,13.5469); SendClientMessage(playerid, COLOR_GREEN, "[SUCCES] 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, "[SUCCES] 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 SetPlayerPos(playerid, 2002.7592,-2426.9822,13.5469); // Teleport the player back to spawn SendClientMessage(playerid, COLOR_GREEN, "[SUCCES] 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."); 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, "[SUCCES] You died by /kill"); SetPlayerHealth(playerid, 0); return 1; } // /me Command if(!strcmp(cmdtext, "/me", true, 3)) { new str[256], pname[256]; GetPlayerName(playerid, pname, 256); format(str, 256, "%s %s", pname, cmdtext[4]); SendClientMessageToAll(COLOR_PINK, str); 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] Capture The Flag.", 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); yellowteam = CreatePickup(1239, 23, -54.7386,71.6878,3.1606); greenteam = CreatePickup(1239, 23, -105.3960,-77.6870,3.3020); yellowflag = CreatePickup(1577, 3, -55.4926,69.6995,6.5278); greenflag = CreatePickup(1578, 3, -105.2316,-76.0822,6.6692); 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!",2000,5); DestroyPickup(pickupid); CreatePickup(1577, 23, -55.4926,69.6995,6.5278); } else if ( pickupid == greenflag && gTeam[playerid] == TEAM_GREEN ) { GameTextForPlayer(playerid, "~r~You can't steal your own flag!",2000,5); DestroyPickup(pickupid); CreatePickup(1578, 23, -105.2316,-76.0822,6.6692); } else if ( pickupid == greenflag && gTeam[playerid] == TEAM_YELLOW ) { SendClientMessage(playerid, COLOR_GREEN, "[SUCCES] You got the green flag! Get it back to your base!"); GameTextForAll("~w~The ~g~green~w~ flag got ~r~stolen!",2000,5); SetPlayerCheckpoint(playerid,-54.7386,71.6878,3.1606,2); DestroyPickup(pickupid); } else if ( pickupid == yellowflag && gTeam[playerid] == TEAM_GREEN ) { SendClientMessage(playerid, COLOR_GREEN, "[SUCCES] You got the yellow flag! Get it back to your base!"); GameTextForAll("~w~The ~y~yellow~w~ flag got ~r~stolen!",2000,5); SetPlayerCheckpoint(playerid,-105.3960,-77.6870,3.3020,2); DestroyPickup(pickupid); } if ( pickupid == yellowflag ) { GotFlag[playerid] = 1; } if ( pickupid == greenflag ) { GotFlag[playerid] = 1; } return 1; } //--------------------------------------------------------- public OnPlayerEnterCheckpoint(playerid) { cgreen = IsPlayerInCheckpoint(playerid); if ( cgreen && gTeam[playerid] == TEAM_YELLOW ) { SendClientMessage(playerid, COLOR_GREEN, "[SUCCES] You captured the green flag!"); GameTextForAll("~y~Yellow~w~ team captured~n~ the ~g~green~w~ flag!",2000,5); DisablePlayerCheckpoint(playerid); CreatePickup(1578, 23, -54.7386,71.6878,3.1606); } cyellow = IsPlayerInCheckpoint(playerid); if ( cyellow && gTeam[playerid] == TEAM_GREEN ) { SendClientMessage(playerid, COLOR_GREEN, "[SUCCES] You captured the yellow flag!"); GameTextForAll("~g~Green~w~ team captured~n~ the ~y~yellow~w~ flag!",2000,5); DisablePlayerCheckpoint(playerid); CreatePickup(1577, 23, -105.3960,-77.6870,3.3020); } } //--------------------------------------------------------- public OnPlayerRequestClass(playerid, classid) { SetPlayerPos(playerid, 1652.4016,-2542.9951,17.2344); SetPlayerCameraPos(playerid, 1648.4016,-2542.9951,17.2344); SetPlayerCameraLookAt(playerid, 1652.4016,-2542.9951,17.2344); SetPlayerTeamFromClass(playerid, classid); SetPlayerFacingAngle(playerid, 90.0); return 1; } //--------------------------------------------------------- public OnPlayerDeath(playerid, killerid, reason) { GivePlayerMoney(killerid, 1000); SendDeathMessage(killerid, playerid, reason); SetPlayerScore(killerid, 1); if (gTeam[playerid] == gTeam[killerid]) { SetPlayerScore(killerid, GetPlayerScore(killerid) - 1); } 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)); 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; }