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);
}