All pastes #827788 Raw Edit

Unnamed

public text v1 · immutable
#827788 ·published 2007-12-22 00:33 UTC
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();

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,9,1);
        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, -60.4968,71.6842,3.1606);
        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, -99.4409,-76.2211,3.3020);
        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);
        if( GotFlag[playerid] == 1 )
        {
        SendClientMessageToAll(COLOR_RED, "Yellow Flag Returned");
        CreatePickup(1577, 23, -55.4926,69.6995,6.5278);
        }

        if( GotFlag[playerid] == 2 )
        {
        SendClientMessageToAll(COLOR_RED, "Green Flag Returned");
        CreatePickup(1578, 23, -105.2316,-76.0822,6.6692);
}
        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!",5000,5);
    DestroyPickup(pickupid);
    CreatePickup(1577, 23, -55.4926,69.6995,6.5278);
    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);
    CreatePickup(1578, 23, -105.2316,-76.0822,6.6692);
    GotFlag[playerid] = 0;
    }

    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!",5000,5);
    SetPlayerCheckpoint(playerid,-54.7386,71.6878,3.1606,2);
    GotFlag[playerid] = 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!",5000,5);
    SetPlayerCheckpoint(playerid,-105.3960,-77.6870,3.3020,2);
    GotFlag[playerid] = 1;
    DestroyPickup(pickupid);
    }

    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!",5000,5);
    DisablePlayerCheckpoint(playerid);
    GotFlag[playerid] = 0;
    CreatePickup(1578, 23, -105.2316,-76.0822,6.6692);

    }
    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!",5000,5);
    DisablePlayerCheckpoint(playerid);
    GotFlag[playerid] = 0;
    CreatePickup(1577, 23, -55.4926,69.6995,6.5278);
    }
}

//---------------------------------------------------------

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, GetPlayerScore(playerid)+1);
    if (gTeam[playerid] == gTeam[killerid])
    {
    SetPlayerScore(killerid, GetPlayerScore(killerid) - 1);
    }

    if( GotFlag[playerid] == 1 )
    {
    GameTextForAll("~r~Red~w~ flag returned",5000,5);
    CreatePickup(1577, 23, -55.4926,69.6995,6.5278);
    }

    if( GotFlag[playerid] == 2 )
    {
    GameTextForAll("~g~Green~w~ flag returned",5000,5);
    CreatePickup(1578, 23, -105.2316,-76.0822,6.6692);
    }
    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");
    CreatePickup(1577, 23, -55.4926,69.6995,6.5278);
    }

    if( GotFlag[playerid] == 2 )
    {
    SendClientMessageToAll(COLOR_RED, "Green Flag Returned");
    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;
}