All pastes #605864 Raw Edit

Farmer vs. Cops v2

public text v1 · immutable
·published 2007-07-06 14:24 UTC
rendered paste body
#include <a_samp>
#include <core>
#include <float>

// Global stuff and defines for our gamemode.

static gTeam[MAX_PLAYERS]; // Tracks the team assignment for each player

#define OBJECTIVE_VEHICLE_BLUE 1
#define TEAM_GREEN 1
#define TEAM_BLUE 2
#define OBJECTIVE_COLOR 0xAA0000FF
#define TEAM_GREEN_COLOR 0x33AA33AA
#define TEAM_BLUE_COLOR 0x3333AAAA
#define COLOR_GREEN 0x33AA33AA
#define COLOR_RED 0xAA3333AA

new gObjectiveBluePlayer=(-1);
new Cops;
new Farmer;

forward SetPlayerToTeamColor(playerid);
forward SetupPlayerForClassSelection(playerid);
forward SetPlayerTeamFromClass(playerid,classid);
forward Restart(playerid);
forward Restart1(playerid);
forward ExitTheGameMode();
forward GiveFarmerMoney(playerid);
forward SendPlayerFormattedText(playerid, const str[], color);
//---------------------------------------------------------

main()
{
        print("\n----------------------------------");
        print("  FarmerVs.Cops v2.0\n");
        print("----------------------------------\n");
}

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

public OnPlayerStateChange(playerid, newstate, oldstate)
{
        new vehicleid;

        if(newstate == PLAYER_STATE_DRIVER)
        {
                vehicleid = GetPlayerVehicleID(playerid);

                if(gTeam[playerid] == TEAM_BLUE && vehicleid == OBJECTIVE_VEHICLE_BLUE)
                { // It's the objective vehicle
                    AddVehicleComponent(OBJECTIVE_VEHICLE_BLUE, 1010);
                    SetPlayerColor(playerid,OBJECTIVE_COLOR);
                    GameTextForPlayer(playerid,"~w~Take the ~r~moneytruck ~w~back to the spawn!",3000,5);
                    gObjectiveBluePlayer = playerid;
                }
        }
        else if(newstate == PLAYER_STATE_ONFOOT)
        {
                if(playerid == gObjectiveBluePlayer)
				{
                    gObjectiveBluePlayer = (-1);
                    SetPlayerToTeamColor(playerid);
                }
        }
return 1;
}

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

public OnGameModeInit()
{
Cops = GangZoneCreate(268.5911, -1868.46, 385.3699, -1704.97);
Farmer = GangZoneCreate(-443.7593, -1541.479, -291.9469, -1342.956);
//Objects:
CreateObject(8210, -364.532867, -1354.596802, 23.185678, 0, 0, 250.9378);
CreateObject(8210, -382.132202, -1322.766724, 26.474600, 0, 6.0161, 348.75);
CreateObject(8210, -414.872131, -1344.778442, 27.228954, 0, 355.7028, 78.75);
CreateObject(987, -413.446106, -1381.667969, 22.538481, 0, 0, 123.7499);
CreateObject(987, -406.810028, -1391.459839, 22.498192, 0, 0, 123.7499);
CreateObject(987, -400.266357, -1401.260742, 22.492678, 0, 0, 123.7499);
CreateObject(979, -377.399353, -1383.588257, 22.458151, 0, 0, 213.75);
CreateObject(979, -387.136871, -1390.306763, 22.586538, 0, 359.1406, 213.75);
CreateObject(987, -383.766602, -1387.337036, 21.887968, 0, 0, 33.75);
CreateObject(987, -391.221344, -1392.400146, 21.892338, 0, 0, 33.75);
CreateObject(966, -397.467438, -1396.828735, 22.403381, 0, 0, 213.75);
CreateObject(968, -397.433044, -1396.804321, 23.290543, 0, 0, 33.75);
CreateObject(967, -397.958618, -1398.225098, 22.388947, 0, 0, 32.8906);
CreateObject(970, -398.624756, -1399.838257, 22.946869, 0, 0, 33.75);
CreateObject(970, -398.624237, -1399.845947, 24.004873, 0, 0, 33.75);
CreateObject(970, -398.591522, -1399.849609, 25.110973, 0, 0, 33.75);
CreateObject(3279, -362.633789, -1333.434937, 21.310383, 0, 0, 168.75);
CreateObject(3279, -379.475128, -1375.770874, 21.992777, 0, 0, 146.25);
CreateObject(3399, -406.027985, -1434.041016, 27.314953, 0, 0, 0);
CreateObject(8614, -372.305908, -1417.014893, 27.075842, 0, 4.2972, 270);
CreateObject(8614, -365.900513, -1414.699829, 30.864906, 0, 0, 180);
CreateObject(3279, -409.262695, -1343.191040, 24.378386, 0, 0, 348.75);
CreateObject(1458, -405.727112, -1327.119629, 25.949831, 0, 0, 0);
CreateObject(12921, -393.833313, -1395.790161, 25.587015, 0, 0, 33.75);
CreateObject(17324, -390.830566, -1340.374146, 23.964664, 4.2972, 1.7189, 349.6094);
CreateObject(3461, -390.298584, -1393.040649, 23.675467, 0, 0, 0);
CreateObject(3168, -410.485931, -1357.338867, 23.502028, 0, 0, 168.75);
CreateObject(4726, 332.120636, -1836.737549, 2.014965, 0, 0, 180);
CreateObject(3279, 302.548859, -1779.621338, 3.555548, 0, 0, 315);
CreateObject(3279, 300.057770, -1813.526978, 3.445765, 0, 0, 22.5);
CreateObject(16778, 335.582611, -1778.450073, 4.096195, 0, 0, 270);
CreateObject(1369, 313.124207, -1784.247314, 4.240703, 0, 0, 22.5);

//Spawnpoints:
//Farmer
CreateVehicle(428, -391.341003, -1342.480713, 25.150469, 167, 3, 3, 3600); //Obj Vehicle
CreateVehicle(508, -375.027893, -1345.119263, 23.437363, 156, 86, 86, 60);
CreateVehicle(468, -414.041534, -1356.140015, 24.428274, 167, 86, 86, 60);
CreateVehicle(478, -384.486725, -1381.990845, 23.293976, 32, 86, 86, 60);
CreateVehicle(478, -391.276611, -1386.882690, 23.447811, 32, 86, 86, 60);
CreateVehicle(489, -405.874725, -1370.005615, 24.233240, 249, 86, 86, 60);
CreateVehicle(489, -408.009125, -1376.249512, 24.044243, 249, 86, 86, 60);
CreateVehicle(413, -374.806152, -1408.354248, 25.941299, 294, 86, 86, 60);
CreateVehicle(479, -374.717346, -1427.224121, 25.976353, 360, 86, 86, 60);
CreateVehicle(478, -381.140503, -1397.125000, 24.258635, 112, 86, 86, 60);
CreateVehicle(468, -380.236725, -1450.241699, 25.976353, 360, 86, 86, 60);
CreateVehicle(468, -376.970245, -1450.228394, 25.976353, 360, 86, 86, 60);
CreateVehicle(468, -373.098236, -1450.310059, 25.976353, 360, 86, 86, 60);
//Police
CreateVehicle(497, 331.575317, -1839.652466, 4.606002, 89, 0, 0, 60);
CreateVehicle(579, 311.455078, -1809.154785, 4.730524, 360, 0, 0, 60);
CreateVehicle(554, 314.831116, -1809.165527, 4.729264, 360, 0, 0, 60);
CreateVehicle(554, 320.883850, -1809.318848, 4.729151, 360, 0, 0, 60);
CreateVehicle(579, 338.543396, -1757.452759, 5.193665, 182, 0, 0, 60);
CreateVehicle(579, 348.703125, -1762.918823, 5.333366, 11, 0, 0, 60);
CreateVehicle(541, 312.029388, -1789.063110, 4.828098, 182, 0, 0, 60);
CreateVehicle(490, 330.984558, -1789.109619, 5.133396, 360, 0, 0, 60);
CreateVehicle(490, 337.306854, -1789.278198, 5.162214, 360, 0, 0, 60);
CreateVehicle(541, 327.809113, -1789.123779, 5.082153, 182, 0, 0, 60);
CreateVehicle(541, 321.395020, -1789.198120, 4.978451, 182, 0, 0, 60);
CreateVehicle(490, 333.972473, -1809.021362, 4.741501, 182, 0, 0, 60);
CreateVehicle(561, 350.110321, -1808.147217, 4.809947, 360, 0, 0, 60);
CreateVehicle(490, 355.798340, -1791.052612, 5.359940, 89, 0, 0, 60);
CreateVehicle(561, 355.874176, -1796.068726, 5.166800, 89, 0, 0, 60);
CreateVehicle(554, 301.018188, -1731.987549, 4.684075, 78, 0, 0, 60);
CreateVehicle(561, 319.516724, -1744.115356, 4.662787, 271, 0, 0, 60);
CreateVehicle(579, 158.503220, -1750.911987, 5.157455, 360, 0, 0, 60);
CreateVehicle(490, 157.962173, -1759.452637, 4.940458, 360, 0, 0, 60);
CreateVehicle(476, 279.325256, -1817.787720, 3.909763, 90, 0, 0, 60);
CreateVehicle(476, 277.693817, -1796.144043, 4.159943, 90, 0, 0, 60);
CreateVehicle(460, 301.706848, -1913.497437, 0.283960, 180, 1, 0, 60);
CreateVehicle(460, 289.981079, -1913.588135, 0.224306, 180, 1, 0, 60);
CreateVehicle(460, 278.712646, -1913.091064, 0.213029, 180, 1, 0, 60);
CreateVehicle(460, 266.621704, -1911.615967, 0.226364, 180, 1, 0, 60);

        // GANG CLASSES
        AddPlayerClass(157,-380.236725, -1410.241699, 25.976353,0,10,0,34,20,32,500);
        AddPlayerClass(158,-360.236725, -1410.241699, 25.976353,87.7485,42,400,30,200,32,400);
        AddPlayerClass(159,-370.236725, -1410.241699, 25.976353,129.4222,5,0,30,200,29,400);

        // POLICE CLASSES
        AddPlayerClass(163,311.455078, -1790.154785, 4.730524,177.0690,42,400,34,50,29,500);
        AddPlayerClass(165,301.455078, -1790.154785, 4.730524,125.6820,3,0,31,200,29,400);
        AddPlayerClass(166,321.455078, -1780.154785, 4.730524,42.6713,3,0,25,50,32,400);

        // Don't use these lines if it's a filterscript
        SetGameModeText("FarmerVs.Cops v2.0");
        ShowPlayerMarkers(0);
        ShowNameTags(1);
        UsePlayerPedAnims();
        SetTimer("ExitTheGameMode", 1800000, 0);
        SetTimer("GiveFarmerMoney", 5000, 1);
        return 1;
}

//---------------------------------------------------------
public OnPlayerCommandText(playerid, cmdtext[])
{
	new cmd[256];
	new idx;
	cmd = strtok(cmdtext, idx);
	if(strcmp(cmdtext, "/bw flamethrower", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 2500)
	{
	GivePlayerWeapon(playerid, 37, 100);
	GivePlayerMoney(playerid, -2500);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/bw molotov", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 1000)
	{
	GivePlayerWeapon(playerid, 18, 10);
	GivePlayerMoney(playerid, -1000);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/bw grenade", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 1000)
	{
	GivePlayerWeapon(playerid, 16, 10);
	GivePlayerMoney(playerid, -1000);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/bw rpg", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 5000)
	{
	GivePlayerWeapon(playerid, 35, 10);
	GivePlayerMoney(playerid, -5000);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/bw sawnoff", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 1000)
	{
	GivePlayerWeapon(playerid, 26, 20);
	GivePlayerMoney(playerid, -1000);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/bw combat", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 1000)
	{
	GivePlayerWeapon(playerid, 27, 20);
	GivePlayerMoney(playerid, -1000);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/bw uzi", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 1000)
	{
	GivePlayerWeapon(playerid, 28, 100);
	GivePlayerMoney(playerid, -1000);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/bw sniper", true) == 0)
	{
	if(GetPlayerMoney(playerid) >= 3000)
	{
	GivePlayerWeapon(playerid, 34, 20);
	GivePlayerMoney(playerid, -3000);
	return 1;
	} else {SendPlayerFormattedText(playerid, "YOU HAVE NOT ENOUGH MONEY!", COLOR_RED);}
	}
	if(strcmp(cmdtext, "/weaponlist", true) == 0)
	{
    SendPlayerFormattedText(playerid, "/bw flamethrower - 2500$; /bw molotov - 1000$; /bw grenade - 1000$", COLOR_GREEN);
    SendPlayerFormattedText(playerid, "/bw rpg - 5000$; /bw sawnoff - 1000$; /bw combat - 1000$", COLOR_GREEN);
    SendPlayerFormattedText(playerid, "/bw uzi - 1000$; /bw sniper - 3000$", COLOR_GREEN);
	return 1;
	}
return 1;
}
//---------------------------------------------------------

public OnPlayerConnect(playerid)
{
        SetPlayerColor(playerid,0x888888FF);
        GameTextForPlayer(playerid,"~r~SA-MP:~w~Farmer vs. Cops v2.0",5000,5);
        SendPlayerFormattedText(playerid, "If the cops drove the vehicle to the red dot, every cop get 10.000$", COLOR_GREEN);
        SendPlayerFormattedText(playerid, "every farmer will loose 10.000$.", COLOR_GREEN);
        SendPlayerFormattedText(playerid, "/weaponlist - to see weapons, which you can buy", COLOR_GREEN);
        return 1;
}

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

public SetupPlayerForClassSelection(playerid)
{
        SetPlayerInterior(playerid,11);
        SetPlayerPos(playerid,508.7362,-87.4335,998.9609);
    	SetPlayerCameraPos(playerid,508.7362,-83.4335,998.9609);
        SetPlayerCameraLookAt(playerid,508.7362,-87.4335,998.9609);
        SetPlayerFacingAngle(playerid,0.0);
}

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

public SetPlayerTeamFromClass(playerid,classid)
{
        // Set their team number based on the class they selected.
        if(classid == 0 || classid == 1 || classid == 2) {
        gTeam[playerid] = TEAM_GREEN;
        } else if(classid == 3 || classid == 4 || classid == 5) {
        gTeam[playerid] = TEAM_BLUE;
        }
}

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

public SetPlayerToTeamColor(playerid)
{
        if(gTeam[playerid] == TEAM_GREEN) {
       	SetPlayerColor(playerid,TEAM_GREEN_COLOR); // green
        } else if(gTeam[playerid] == TEAM_BLUE) {
       	SetPlayerColor(playerid,TEAM_BLUE_COLOR); // blue
        }
}

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

public OnPlayerRequestClass(playerid, classid)
{
        SetupPlayerForClassSelection(playerid);
        SetPlayerTeamFromClass(playerid,classid);

        if(classid == 0 || classid == 1 || classid == 2) {
        	GameTextForPlayer(playerid,"~g~FARMER ~w~TEAM",1000,5);
        } else if(classid == 3 || classid == 4 || classid == 5) {
            GameTextForPlayer(playerid,"~b~COP ~w~TEAM",1000,5);
        }

        return 1;
}

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

public OnPlayerSpawn(playerid)
{
    GangZoneShowForPlayer(playerid, Cops, 0x00000096);
    GangZoneShowForPlayer(playerid, Farmer, 0x00FF0096);
        SetPlayerToTeamColor(playerid);
        SetPlayerInterior(playerid,0);

        if(gTeam[playerid] == TEAM_GREEN) {
                SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_BLUE,playerid,1,1); // objective; locked
            GameTextForPlayer(playerid,
                   "Defend the ~g~FARMER ~w~team's ~r~MoneyTruck",
                   6000,5);
        }
        else if(gTeam[playerid] == TEAM_BLUE) {
                SetVehicleParamsForPlayer(OBJECTIVE_VEHICLE_BLUE,playerid,1,0); // objective; unlocked
            SetPlayerCheckpoint(playerid,834.8496,-2053.5127,15,10.0);
            GameTextForPlayer(playerid,
                   "Capture the ~g~FARMER ~w~team's ~r~MoneyTruck",
                   6000,5);
        }

        return 1;
}

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

public OnPlayerEnterCheckpoint(playerid)
{
        new playervehicleid = GetPlayerVehicleID(playerid);

        if(playervehicleid == OBJECTIVE_VEHICLE_BLUE && gTeam[playerid] == TEAM_BLUE)
        {   // Blue OBJECTIVE REACHED.
            if(gTeam[playerid] == TEAM_GREEN)
            {
            GameTextForPlayer(playerid, "~b~COP ~w~team scored! ~r~-10.000$",6000,5);
			GivePlayerMoney(playerid, -10000);
            }
            if(gTeam[playerid] == TEAM_BLUE)
            {
            GameTextForPlayer(playerid, "~b~COP ~w~team scored! ~r~+10.000$", 6000,5);
            GivePlayerMoney(playerid, 10000);
            }
            SetPlayerScore(playerid,GetPlayerScore(playerid)+5);
            SetTimer("Restart", 4000, 0); // Set up a timer to restart this mode.
            return 1;
        }
return 1;
}

//---------------------------------------------------------
public GiveFarmerMoney(playerid)
{
	if(gTeam[playerid] == TEAM_GREEN)
	{
    GivePlayerMoney(playerid,100);
    }
}
public Restart(playerid)
{
    RemovePlayerFromVehicle(playerid);
	SetTimer("Restart1", 2000, 0);
}
public Restart1(playerid)
{
	if(IsPlayerInVehicle(playerid, OBJECTIVE_VEHICLE_BLUE))
 {
    RemovePlayerFromVehicle(playerid);
 }
    SetVehicleZAngle(OBJECTIVE_VEHICLE_BLUE, 167);
    SetVehiclePos(OBJECTIVE_VEHICLE_BLUE, -391.341003, -1342.480713, 25.150469);
    SetVehicleHealth(OBJECTIVE_VEHICLE_BLUE, 1000);
}
public ExitTheGameMode()
{
    GameModeExit();
}
//---------------------------------------------------------

public OnPlayerDeath(playerid, killerid, reason)
{
		ResetPlayerMoney(playerid);
        if(killerid == INVALID_PLAYER_ID) {
        SendDeathMessage(INVALID_PLAYER_ID,playerid,reason);
        } else {
        if(gTeam[killerid] != gTeam[playerid]) {
                // Valid kill
                SendDeathMessage(killerid,playerid,reason);
                        SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
        }
                else {
                    // Team kill
                    SetPlayerScore(killerid,GetPlayerScore(killerid)+1);
                }
        }
        return 1;
}

//---------------------------------
strtok(const string[], &index)
{
	new length = strlen(string);
	while ((index < length) && (string[index] <= ' '))
	{
		index++;
	}

	new offset = index;
	new result[20];
	while ((index < length) && (string[index] > ' ') && ((index - offset) < (sizeof(result) - 1)))
	{
		result[index - offset] = string[index];
		index++;
	}
	result[index - offset] = EOS;
	return result;
}
public SendPlayerFormattedText(playerid, const str[], color)
{
	new tmpbuf[256];
	format(tmpbuf, sizeof(tmpbuf), str, 0);
	SendClientMessage(playerid, color, tmpbuf);
}