Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <a_samp>
- #include <Pawn.CMD>
- #include <sscanf2>
- new playerCheckpoint[MAX_PLAYERS];
- new pRaceParticipant[MAX_PLAYERS];
- new pRaceVehicle[MAX_PLAYERS];
- new raceFinishers;
- new bool:inRace[MAX_PLAYERS];
- new Float:pLastPos[MAX_PLAYERS][3];
- new raceCountdown = 0;
- new pPlayers;
- enum rEnum {
- rRaceTimer,
- bool:rRaceStarted,
- bool:rEventStarted,
- bool:rEventLocked
- };
- new RaceInfo[rEnum];
- #define FILTERSCRIPT
- public OnFilterScriptInit()
- {
- RaceInfo[rRaceStarted] = false;
- RaceInfo[rEventStarted] = false;
- RaceInfo[rEventLocked] = true;
- pPlayers = 0;
- }
- public OnPlayerConnect(playerid)
- {
- inRace[playerid] = false;
- pRaceParticipant[playerid] = 0;
- return 1;
- }
- CMD:leaverace(playerid, params[])
- {
- new string[256];
- if(pRaceParticipant[playerid] != 1)
- {
- return SendClientMessage(playerid, -1, "{FF0000}You have not joined the race!");
- }
- pRaceParticipant[playerid] = 0;
- SendClientMessage(playerid, -1, "{8FDE1F}You have left the race! {FFFFFF}/joinrace {8FDE1F}to join again.");
- SetPlayerPos(playerid, pLastPos[playerid][0], pLastPos[playerid][1], pLastPos[playerid][2]);
- DisableRemoteVehicleCollisions(playerid, 0);
- DestroyVehicle(pRaceVehicle[playerid]);
- pPlayers--;
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(pRaceParticipant[i])
- {
- format(string, sizeof(string), "{FFFFFF}%s {8FDE1F}has left the event :( There are now {FFFFFF}%d players{8FDE1F} in the race!", GetPlayerRPName(playerid), pPlayers);
- SendClientMessage(i, -1, string);
- }
- }
- return 1;
- }
- CMD:joinrace(playerid, params[])
- {
- new Float:pos[3], string[256];
- if(pRaceParticipant[playerid] == 1)
- {
- return SendClientMessage(playerid, -1, "{FF0000}You have already joined the race!");
- }
- if(RaceInfo[rEventStarted] == false)
- {
- return SendClientMessage(playerid, -1, "{FF0000}No one has started a race event yet.");
- }
- if(RaceInfo[rEventLocked] == true)
- {
- return SendClientMessage(playerid, -1, "{FF0000}The race has already started, better luck next time!");
- }
- pRaceParticipant[playerid] = 1;
- pRaceVehicle[playerid] = AddStaticVehicle(468,30.6976, 1523.6914, 14.1109, 109.6104,0,0);
- pPlayers++;
- GetPlayerPos(playerid, pos[0],pos[1],pos[2]);
- pLastPos[playerid][0] = pos[0];
- pLastPos[playerid][1] = pos[1];
- pLastPos[playerid][2] = pos[2];
- DisableRemoteVehicleCollisions(playerid, 1);
- TogglePlayerControllable(playerid, 0);
- PutPlayerInVehicle(playerid, pRaceVehicle[playerid], 0);
- SendClientMessage(playerid, -1, "{8FDE1F}City Of Manila Race Event:");
- SendClientMessage(playerid, -1, "You have joined the race event, please");
- SendClientMessage(playerid, -1, "wait for the host to lock and start the event.");
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(pRaceParticipant[i])
- {
- format(string, sizeof(string), "{FFFFFF}%s {8FDE1F}has joined the event! There are now {FFFFFF}%d players{8FDE1F} in the race!", GetPlayerRPName(playerid), pPlayers);
- SendClientMessage(i, -1, string);
- }
- }
- return 1;
- }
- CMD:startrace(playerid, params[])
- {
- if(RaceInfo[rEventStarted] == false)
- {
- return SendClientMessage(playerid, -1, "{FF0000}You have not started the event yet, type /startevent to start it.");
- }
- if(RaceInfo[rRaceStarted] == true)
- {
- return SendClientMessage(playerid, -1, "{FF0000}You have already started the race, wait till someone gets to the finish line!");
- }
- raceFinishers = 0;
- RaceInfo[rEventLocked] = true;
- raceCountdown = 10;
- RaceInfo[rRaceTimer] = SetTimer("OnPlayerStartRaceEvent", 1000, true);
- return 1;
- }
- CMD:startevent(playerid, params[])
- {
- // - ADMIN ONLY COMMAND, palagay nalang hehehehe
- new string[256], message[256];
- if(sscanf(params, "s[256]", message))
- {
- return SendClientMessage(playerid, -1, "[Usage]: /startevent [message]");
- }
- if(RaceInfo[rEventStarted] == true)
- {
- return SendClientMessage(playerid, -1, "{FF0000}You have already started the event, wait for players to join. And type /startrace when ready!");
- }
- RaceInfo[rEventStarted] = true;
- RaceInfo[rRaceStarted] = false;
- RaceInfo[rEventLocked] = false;
- pPlayers = 0;
- SendClientMessageToAll(-1, "{8FDE1F}================[{FFFFFF}City of Manila Race Event{8FDE1F}]================");
- SendClientMessageToAll(-1, "The City of Manila Race Event has commenced! Type {8FDE1F}/joinrace{FFFFFF} to join!");
- format(string, sizeof(string), "Host's Message: %s", message);
- SendClientMessageToAll(-1, string);
- return 1;
- }
- forward OnPlayerStartRaceEvent();
- public OnPlayerStartRaceEvent()
- {
- new string[16];
- raceCountdown -= 1;
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(pRaceParticipant[i])
- {
- PlayerPlaySound(i,17802,0.0,0.0,0.0);
- format(string, sizeof(string), "~w~%d", raceCountdown);
- GameTextForPlayer(i, string, 990, 3);
- }
- }
- if(raceCountdown == 0)
- {
- KillTimer(RaceInfo[rRaceTimer]);
- for(new i = 0; i < MAX_PLAYERS; i++)
- {
- if(pRaceParticipant[i])
- {
- GameTextForPlayer(i, "GO GO GO!", 990, 3);
- TogglePlayerControllable(i, true);
- SetPlayerCheckpoint(i,-148.0093,1594.5282,16.9782,17.5);
- playerCheckpoint[i] = 1;
- }
- }
- }
- }
- forward OnPlayerFinishRace(playerid);
- public OnPlayerFinishRace(playerid)
- {
- new string[256];
- raceFinishers += 1;
- if(raceFinishers == 1) { // {8FDE1F}
- format(string, sizeof(string), "{FFFFFF}%s {FFC200}has finished {FFFFFF}1st {FFC200}in the race.", GetPlayerRPName(playerid));
- SendClientMessageToAll(-1, string);
- } else if(raceFinishers == 2) { // {8FDE1F}
- format(string, sizeof(string), "{FFFFFF}%s {FFC200}has finished {FFFFFF}2nd {FFC200}in the race.",GetPlayerRPName(playerid));
- SendClientMessageToAll(-1, string);
- } else if(raceFinishers == 3) { // {8FDE1F}
- format(string, sizeof(string), "{FFFFFF}%s {FFC200}has finished {FFFFFF}3rd {FFC200}in the race.",GetPlayerRPName(playerid));
- SendClientMessageToAll(-1, string);
- } else {
- format(string, sizeof(string), "{FFFFFF}%s {8FDE1F}has finished {FFFFFF}%dth {8FDE1F}in the race.",GetPlayerRPName(playerid), raceFinishers);
- SendClientMessageToAll(-1, string);
- }
- pRaceParticipant[playerid] = 0;
- DisableRemoteVehicleCollisions(playerid, 0);
- DestroyVehicle(pRaceVehicle[playerid]);
- DisablePlayerCheckpoint(playerid);
- playerCheckpoint[playerid] = -1;
- return 1;
- }
- public OnPlayerEnterCheckpoint(playerid)
- {
- switch(playerCheckpoint[playerid])
- {
- case 1: { SetPlayerCheckpoint(playerid,-89.1638,1536.4152,16.3669,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 2: { SetPlayerCheckpoint(playerid,-148.0093,1594.5282,16.9782,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 3: { SetPlayerCheckpoint(playerid,-196.8481,1659.1995,25.6718,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 4: { SetPlayerCheckpoint(playerid,-304.3438,1673.4180,27.1392,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 5: { SetPlayerCheckpoint(playerid,-400.7416,1747.8184,42.0860,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 6: { SetPlayerCheckpoint(playerid,-401.5449,1914.7720,57.7547,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 7: { SetPlayerCheckpoint(playerid,-438.4989,1760.8953,71.7257,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 8: { SetPlayerCheckpoint(playerid,-478.8807,1945.9531,85.9020,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 9: { SetPlayerCheckpoint(playerid,-370.4173,2190.2378,41.7504,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 10: { SetPlayerCheckpoint(playerid,-417.3397,2291.1155,40.8808,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 11: { SetPlayerCheckpoint(playerid,-510.4167,2333.2485,68.0319,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 12: { SetPlayerCheckpoint(playerid,-714.8569,2461.5740,121.3162,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 13: { SetPlayerCheckpoint(playerid,-689.3806,2306.8826,131.5038,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 14: { SetPlayerCheckpoint(playerid,-860.1246,2308.8479,158.0858,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 15: { SetPlayerCheckpoint(playerid,-1109.1602,2481.4265,80.5265,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 16: { SetPlayerCheckpoint(playerid,-1223.4731,2674.2148,46.0405,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 17: { SetPlayerCheckpoint(playerid,-1348.9530,2646.5376,50.5557,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 18: { SetPlayerCheckpoint(playerid,-1767.3956,2706.5469,59.0966,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 19: { SetPlayerCheckpoint(playerid,-1653.4254,2602.8179,80.2604,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 20: { SetPlayerCheckpoint(playerid,-1653.6700,2469.9709,86.6574,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 21: { SetPlayerCheckpoint(playerid,-1744.2531,2460.2007,72.2669,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 22: { SetPlayerCheckpoint(playerid,-1685.0560,2400.9561,57.7922,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 23: { SetPlayerCheckpoint(playerid,-1753.7842,2291.1743,35.3761,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 24: { SetPlayerCheckpoint(playerid,-1664.5391,2348.1858,37.0445,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 25: { SetPlayerCheckpoint(playerid,-1601.7245,2374.2527,49.5566,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 26: { SetPlayerCheckpoint(playerid,-1519.0881,2156.4834,49.0014,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 27: { SetPlayerCheckpoint(playerid,-1476.5074,1942.3528,49.9472,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 28: { SetPlayerCheckpoint(playerid,-1241.2045,1919.3082,42.5119,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 29: { SetPlayerCheckpoint(playerid,-1122.3887,2107.0457,86.3178,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 30: { SetPlayerCheckpoint(playerid,-1065.7930,2193.3284,87.3968,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 31: { SetPlayerCheckpoint(playerid,-1137.6776,2562.5698,73.2277,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 32: { SetPlayerCheckpoint(playerid,-1142.5548,2695.1790,45.5590,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 33: { SetPlayerCheckpoint(playerid,-779.0065,2721.3096,45.0116,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 34: { SetPlayerCheckpoint(playerid,-699.5007,2684.4172,56.3463,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 35: { SetPlayerCheckpoint(playerid,-713.9308,2520.5427,74.6253,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 36: { SetPlayerCheckpoint(playerid,-833.5760,2371.5325,121.1072,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 37: { SetPlayerCheckpoint(playerid,-733.8931,2349.4683,125.4816,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 38: { SetPlayerCheckpoint(playerid,-678.4554,2467.1707,115.1896,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 39: { SetPlayerCheckpoint(playerid,-505.4073,2326.0903,66.8654,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 40: { SetPlayerCheckpoint(playerid,-387.4561,2298.6714,37.1955,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 41: { SetPlayerCheckpoint(playerid,-397.1547,2452.6111,41.8498,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 42: { SetPlayerCheckpoint(playerid,-348.9204,2522.7346,35.6884,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 43: { SetPlayerCheckpoint(playerid,-410.8728,2674.2305,53.7061,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 44: { SetPlayerCheckpoint(playerid,-560.2380,2702.3237,67.6744,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 45: { SetPlayerCheckpoint(playerid,-522.6776,2444.0098,59.9100,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 46: { SetPlayerCheckpoint(playerid,-374.8915,2483.3823,38.8120,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 47: { SetPlayerCheckpoint(playerid,-505.8501,2592.7168,53.1194,17.5); playerCheckpoint[playerid]++; PlayerPlaySound(playerid,17802,0.0,0.0,0.0); }
- case 48: { OnPlayerFinishRace(playerid); }
- }
- }
- GetPlayerRPName(playerid)
- {
- new
- name[MAX_PLAYER_NAME];
- GetPlayerName(playerid, name, sizeof(name));
- for(new i = 0, l = strlen(name); i < l; i ++)
- {
- if(name[i] == '_')
- {
- name[i] = ' ';
- }
- }
- return name;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement