All pastes #829277 Raw Edit

Stuff

public text v1 · immutable
#829277 ·published 2007-12-23 01:23 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 yellowhealth;
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);
    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);
    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);
    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;
}