#include #include #include // 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); }