Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Short Desert Race Filterscript
- // Made by: eddy
- // Version: 1.0
- #include <a_samp>
- #define COLOR_RED 0xFF0000AA
- #define COLOR_GREEN 0x33FF33AA
- #define MIN_RACE_DRIVERS 1
- #define MAX_RACE_DRIVERS 2
- #define RACE_POSITION_ONE 2471.7903, 2770.8059, 10.7101
- #define RACE_POSITION_TWO 2471.5359, 2775.8389, 10.7085
- #define RACE_POSITION_ANGLE 90.0000
- #define RACE_CHECKPOINT 274.8427, 1411.6853, 10.4438
- #define dcmd(%1,%2,%3) if ((strcmp((%3)[1], #%1, true, (%2)) == 0) && ((((%3)[(%2) + 1] == 0) && (dcmd_%1(playerid, "")))||(((%3)[(%2) + 1] == 32) && (dcmd_%1(playerid, (%3)[(%2) + 2]))))) return 1
- enum PlayerInfo
- {
- InRace
- }
- enum RaceInfo
- {
- Created,
- Started
- }
- enum PlayerRaceInfo
- {
- Creator,
- RaceDriver1,
- RaceDriver2
- }
- new PlayerData[MAX_PLAYERS][PlayerInfo];
- new RaceData[RaceInfo];
- new PlayerRaceData[MAX_PLAYERS][PlayerRaceInfo];
- new RaceCountDown = -1;
- new RaceDrivers;
- new RaceCar1;
- new RaceCar2;
- new Text:TextDrawRace;
- public OnFilterScriptInit()
- {
- TextDrawRace = TextDrawCreate(20.0, 260.0, "Short Desert Race by eddy");
- TextDrawUseBox(TextDrawRace, false);
- TextDrawColor(TextDrawRace, COLOR_RED);
- TextDrawFont(TextDrawRace, 1);
- RaceData[Created] = 0;
- RaceData[Started] = 0;
- return 1;
- }
- public OnPlayerConnect(playerid)
- {
- PlayerData[playerid][InRace] = 0;
- PlayerRaceData[playerid][Creator] = 0;
- PlayerRaceData[playerid][RaceDriver1] = 0;
- PlayerRaceData[playerid][RaceDriver2] = 0;
- return 1;
- }
- public OnPlayerSpawn(playerid)
- {
- TogglePlayerControllable(playerid, true);
- TextDrawHideForPlayer(playerid, TextDrawRace);
- PlayerData[playerid][InRace] = 0;
- PlayerRaceData[playerid][Creator] = 0;
- PlayerRaceData[playerid][RaceDriver1] = 0;
- PlayerRaceData[playerid][RaceDriver2] = 0;
- return 1;
- }
- public OnPlayerDeath(playerid)
- {
- TextDrawHideForPlayer(playerid, TextDrawRace);
- return 1;
- }
- public OnPlayerEnterRaceCheckpoint(playerid)
- {
- new string[256];
- new PlayerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- GivePlayerMoney(playerid, 5000);
- for(new i = 0; i < MAX_PLAYERS; i++)
- DisablePlayerRaceCheckpoint(i);
- format(string, sizeof(string), "~g~%s won the Race!", PlayerName);
- GameTextForAll(string, 5000, 3);
- SetTimer("DestroyRace", 10000, 0);
- return 1;
- }
- dcmd_race(playerid, params[])
- {
- #pragma unused params
- if(RaceData[Created] == 0)
- {
- if(PlayerData[playerid][InRace] == 0)
- {
- new string[256];
- new string2[256];
- new string3[256];
- new string4[256];
- new PlayerName[MAX_PLAYER_NAME];
- new PlayerVehicle;
- PlayerVehicle = GetPlayerVehicleID(playerid);
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- SetCameraBehindPlayer(playerid);
- DestroyVehicle(PlayerVehicle);
- RaceCar1 = CreateVehicle(411, RACE_POSITION_ONE, RACE_POSITION_ANGLE, -1, -1, 5000);
- PutPlayerInVehicle(playerid, RaceCar1, 0);
- TogglePlayerControllable(playerid, false);
- TextDrawShowForPlayer(playerid, TextDrawRace);
- format(string, sizeof(string), "%s has created a Race! Type /joinrace to join him/her!", PlayerName);
- format(string3, sizeof(string2), "Short Desert Race made by eddy");
- format(string2, sizeof(string3), "Type /startrace to start the Race", PlayerName);
- format(string3, sizeof(string4), "Type /quitrace to quit the Race");
- SendClientMessageToAll(COLOR_GREEN, string);
- SendClientMessage(playerid, COLOR_RED, string2);
- SendClientMessage(playerid, COLOR_GREEN, string3);
- SendClientMessage(playerid, COLOR_GREEN, string4);
- RaceDrivers++;
- RaceData[Created] = 1;
- RaceData[Started] = 0;
- PlayerData[playerid][InRace] = 1;
- PlayerRaceData[playerid][Creator] = 1;
- PlayerRaceData[playerid][RaceDriver1] = 1;
- return 1;
- }
- else return SendClientMessage(playerid, COLOR_RED, "You are already in a Race");
- }
- else return SendClientMessage(playerid, COLOR_RED, "A Race has already been created");
- }
- dcmd_joinrace(playerid, params[])
- {
- #pragma unused params
- if(RaceData[Created] == 1)
- {
- if(PlayerData[playerid][InRace] == 0)
- {
- if(RaceData[Started] == 0)
- {
- if(RaceDrivers <= MAX_RACE_DRIVERS)
- {
- new string[256];
- new string2[256];
- new string3[256];
- new string4[256];
- new PlayerName[MAX_PLAYER_NAME];
- new PlayerVehicle;
- PlayerVehicle = GetPlayerVehicleID(playerid);
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- SetCameraBehindPlayer(playerid);
- DestroyVehicle(PlayerVehicle);
- RaceCar2 = CreateVehicle(411, RACE_POSITION_TWO, RACE_POSITION_ANGLE, -1, -1, 5000);
- PutPlayerInVehicle(playerid, RaceCar2, 0);
- TogglePlayerControllable(playerid, false);
- TextDrawShowForPlayer(playerid, TextDrawRace);
- format(string, sizeof(string), "%s has joined the Race!", PlayerName);
- format(string3, sizeof(string2), "Short Desert Race made by eddy");
- format(string2, sizeof(string3), "The Creator of the Race has to start the Race, please wait...", PlayerName);
- format(string3, sizeof(string4), "Type /quitrace to quit the Race");
- SendClientMessageToAll(COLOR_GREEN, string);
- SendClientMessage(playerid, COLOR_RED, string2);
- SendClientMessage(playerid, COLOR_GREEN, string3);
- SendClientMessage(playerid, COLOR_GREEN, string4);
- RaceDrivers++;
- PlayerData[playerid][InRace] = 1;
- PlayerRaceData[playerid][RaceDriver2] = 1;
- return 1;
- }
- else return SendClientMessage(playerid, COLOR_RED, "The limit of Race Drivers has been reached");
- }
- else return SendClientMessage(playerid, COLOR_RED, "You cannot join a started Race");
- }
- else return SendClientMessage(playerid, COLOR_RED, "You are already in a Race");
- }
- else return SendClientMessage(playerid, COLOR_RED, "There are no Races to join");
- }
- dcmd_startrace(playerid, params[])
- {
- #pragma unused params
- if(PlayerData[playerid][InRace] == 1)
- {
- if(PlayerRaceData[playerid][Creator] == 1)
- {
- if(RaceDrivers >= MIN_RACE_DRIVERS)
- {
- new string[256];
- new PlayerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- format(string, sizeof(string), "%s has started the Race!", PlayerName);
- SendClientMessageToAll(COLOR_GREEN, string);
- RaceCountDown = 6;
- SetTimer("RaceCountDownTimer", 1000, 0);
- return 1;
- }
- else return SendClientMessage(playerid, COLOR_RED, "There needs to be 2 Race Drivers");
- }
- else return SendClientMessage(playerid, COLOR_RED, "You are not the Creator of this Race");
- }
- else return SendClientMessage(playerid, COLOR_RED, "You are not in a Race");
- }
- dcmd_quitrace(playerid, params[])
- {
- #pragma unused params
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(PlayerData[playerid][InRace] == 1)
- {
- if(PlayerRaceData[playerid][RaceDriver1] == 1 && PlayerRaceData[playerid][Creator] == 1 && PlayerData[i][InRace] == 1)
- {
- new string[256];
- new PlayerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- DestroyVehicle(RaceCar1);
- DestroyVehicle(RaceCar2);
- DisablePlayerRaceCheckpoint(i);
- SetPlayerHealth(i, 0);
- SetPlayerArmour(i, 0);
- format(string, sizeof(string), "The Race has been cancelled! (Creator left)");
- SendClientMessageToAll(COLOR_GREEN, string);
- RaceDrivers = 0;
- RaceData[Created] = 0;
- RaceData[Started] = 0;
- PlayerData[i][InRace] = 0;
- PlayerRaceData[i][Creator] = 0;
- PlayerRaceData[i][RaceDriver1] = 0;
- PlayerRaceData[i][RaceDriver2] = 0;
- return 1;
- }
- if(PlayerRaceData[playerid][RaceDriver2] == 1)
- {
- new string[256];
- new PlayerName[MAX_PLAYER_NAME];
- GetPlayerName(playerid, PlayerName, sizeof(PlayerName));
- DestroyVehicle(RaceCar2);
- DisablePlayerRaceCheckpoint(playerid);
- SetPlayerHealth(playerid, 0);
- SetPlayerArmour(playerid, 0);
- format(string, sizeof(string), "%s has left the Race!", PlayerName);
- SendClientMessageToAll(COLOR_GREEN, string);
- RaceDrivers--;
- PlayerData[playerid][InRace] = 0;
- PlayerRaceData[playerid][RaceDriver2] = 0;
- return 1;
- }
- return 1;
- }
- else return SendClientMessage(playerid, COLOR_RED, "You are not in a Race");
- }
- return 1;
- }
- public OnPlayerCommandText(playerid, cmdtext[])
- {
- dcmd(race, 4, cmdtext);
- dcmd(joinrace, 8, cmdtext);
- dcmd(startrace, 9, cmdtext);
- dcmd(quitrace, 8, cmdtext);
- return 0;
- }
- forward RaceCountDownTimer();
- public RaceCountDownTimer()
- {
- RaceCountDown--;
- if(RaceCountDown == 0)
- {
- GameTextForAll("~b~Go ~g~Go ~r~Go!", 3000, 3);
- for(new i = 0; i < MAX_PLAYERS; i++)
- TogglePlayerControllable(i, true);
- for(new i = 0; i < MAX_PLAYERS; i++)
- SetPlayerRaceCheckpoint(i, 1, RACE_CHECKPOINT, RACE_CHECKPOINT, 20);
- RaceData[Started] = 1;
- RaceCountDown = -1;
- return 0;
- }
- else
- {
- new text[7]; format(text, sizeof(text), "~g~%d", RaceCountDown);
- GameTextForAll(text, 1000, 3);
- }
- SetTimer("RaceCountDownTimer", 1000, 0);
- return 0;
- }
- forward DestroyRace();
- public DestroyRace()
- {
- for(new i = 0; i < MAX_PLAYERS; i++)
- if(PlayerData[i][InRace] == 1)
- {
- DisablePlayerRaceCheckpoint(i);
- TextDrawHideForPlayer(i, TextDrawRace);
- RaceData[Created] = 0;
- RaceData[Started] = 0;
- DestroyVehicle(RaceCar1);
- DestroyVehicle(RaceCar2);
- SetPlayerHealth(i, 0);
- SetPlayerArmour(i, 0);
- SpawnPlayer(i);
- RaceData[Created] = 0;
- RaceData[Started] = 0;
- PlayerData[i][InRace] = 0;
- PlayerRaceData[i][Creator] = 0;
- PlayerRaceData[i][RaceDriver1] = 0;
- PlayerRaceData[i][RaceDriver2] = 0;
- return 0;
- }
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment