rendered paste body#include <a_samp>#define COLOR_GREEN 0x33AA33AA// TIME:#define SECOND 1000#define MINUTE 60000#define HOUR 600000#define TIMERACEALLERT 1500000#define RECORDFILE "grishracetemplatefile.txt"#define RECORDFILE2 "grishracetemplatefile2.txt"#define MAXCP 39#define MAXCP2 32new Float:racestart[8][4] = {{-1559.1503,708.2474,6.6046,90.0},{-1559.1503,709.2474,7.6046,90.0},{-1559.1503,710.2474,8.6046,90.0},{-1559.1503,711.2474,9.6046,90.0},{-1559.1503,712.2474,10.6046,90.0},{-1559.1503,713.2474,11.6046,90.0},{-1559.1503,714.2474,12.6046,90.0},{-1559.1503,715.2474,13.6046,90.0}};new Float:checkpoints[MAXCP][3] = { {-1557.1720,913.4298,6.6054}, {-1602.5135,1118.2772,6.6054}, {-1844.4310,1351.6093,6.6009}, {-2079.8464,1272.9178,11.6295}, {-2262.8469,1176.7844,55.1499}, {-2260.3962,1012.0422,83.1768}, {-2382.6052,957.6801,44.8325}, {-2385.7439,733.5667,34.5818}, {-2497.6321,707.3870,32.2510}, {-2607.5371,731.9816,28.5625}, {-2605.9036,964.6667,77.6841}, {-2604.2388,1085.6256,59.3463}, {-2592.1790,1157.8811,55.3600}, {-2535.8103,1286.4193,26.5746}, {-2634.2222,1359.3425,6.6838}, {-2710.8501,1381.4888,6.7219}, {-2820.6482,1262.5719,5.0210}, {-2882.0867,1077.7074,30.2150}, {-2810.7952,925.7395,43.4617}, {-2759.2009,807.9506,52.4915}, {-2658.0813,811.3412,49.3931}, {-2517.8540,807.9695,49.3985}, {-2301.2073,808.3007,48.3257}, {-2154.7844,808.6729,68.9847}, {-1993.5045,798.5537,45.0106}, {-1935.2275,798.2739,55.2822}, {-1899.0630,763.1768,44.2799}, {-1898.4320,606.6982,34.5806}, {-1908.2784,511.8835,34.7382}, {-1909.4056,416.5461,34.7382}, {-1905.1587,326.0932,42.4806}, {-1875.8722,290.0139,32.9206}, {-1824.0787,434.0487,17.3025}, {-1771.8665,500.2256,40.3071}, {-1714.3840,555.8719,38.3179}, {-1652.3475,612.8929,24.2222}, {-1607.4950,661.7707,6.7530}, {-1520.7029,699.4978,6.7555},{0.0,0.0,0.0}};new Float:checkpointsRACE2[MAXCP2][3] = { {-2147.8325,-347.8195,34.8378}, {-2016.0786,-350.6972,35.6351}, {-1881.5635,-298.4046,50.5083}, {-1882.7911,-143.3618,38.2109}, {-1887.9915,27.2732,37.9425}, {-1845.1075,298.8844,38.2941}, {-1718.6028,483.5216,38.0311}, {-1526.8628,680.6560,44.5145}, {-1128.5996,1099.8715,37.9211}, {-1060.7582,1172.2555,38.5142}, {-944.6235,1058.4144,24.5935}, {-847.6355,999.5159,24.3175}, {-825.9467,1076.9325,34.3009}, {-877.6638,1040.3339,34.2810}, {-1048.3295,915.6757,34.3251}, {-1428.2582,638.6948,34.3294}, {-1490.9252,597.7620,34.2837}, {-1510.1848,580.1924,34.2840}, {-1542.7854,551.9789,34.1605}, {-1591.5392,461.4247,6.7357}, {-1717.1329,337.0109,6.7356}, {-1813.5970,375.3296,16.7200}, {-1852.2682,354.9960,18.4686}, {-1896.7186,216.4087,38.6078}, {-1964.2202,190.1717,26.4262}, {-2006.4141,89.0367,27.2434}, {-2006.5265,-101.1823,35.3361}, {-2005.4330,-259.4799,35.1859}, {-2026.9711,-316.9001,34.9268}, {-2129.0125,-361.9762,34.7878}, {-2148.9014,-396.7011,35.0457}, {0.0, 0.0, 0.0}};new playercp[MAXCP];new msg[250];new playerdriving[100]; new playerinrace[100]; new playercheck[100]; new playerposition[100]; new raceneumber = 0;new timestart[100]; new timeend[100]; new Float:timetotal[100]; new minutes[100]; new seconds[100]; new mseconds[100]; new ready = 0; new rcount = 0; new raceon = 0; new trig = 0; new trigg = 0;new triggg = 0;new jointorace[MAX_PLAYERS];new racers = 0; new finished = 0;main(){ print("\n----------------------------------"); print(" ERS"); print("----------------------------------\n");}public OnGameModeInit(){ SetGameModeText("ERS"); AddPlayerClass(0,-1559.1503,708.2474,19.6046,90.00, 0, 0, 0, 0, 0, 0); AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16); AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16); AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.00,0,16); AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16); AddStaticVehicle(541,-1559.1503,708.2474,6.6046,90.0,0,16); SetTimer("RaceAllert",TIMERACEALLERT,1); SetTimer("IsRaceEmpty",SECOND+100,1); for (new i=0; i<MAXCP; i++) { playercp[i] = 999; } for (new po=0; po<MAXCP2; po++) { playercp[po] = 999; } print("GameModeInit()"); return 1;}public OnPlayerRequestClass(playerid, classid){ printf("OnPlayerRequestClass(%d, %d)", playerid, classid); SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerFacingAngle(playerid,270.0); SetPlayerCameraPos(playerid, 1961.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); return 1;}public OnGameModeExit(){ print("GameModeExit()"); return 1;}public OnPlayerConnect(playerid){ SendClientMessage(playerid,0x00FF00FF,"type /winner to see who's winning"); printf("OnPlayerConnect(%d)", playerid); return 1;}public OnPlayerDisconnect(playerid){ playerinrace[playerid] = 0; playerposition[playerid] = 999; printf("OnPlayerDisconnect(%d)", playerid); return 1;}public OnPlayerSpawn(playerid){ SetPlayerInterior(playerid,0); GivePlayerMoney(playerid,10000); playerdriving[playerid] = 0; playerinrace[playerid] = 0; playercheck[playerid] = 0; playerposition[playerid] = 999; printf("OnPlayerSpawn(%d)", playerid); return 1;}public OnPlayerDeath(playerid, killerid, reason){ playerinrace[playerid] = 0; playerposition[playerid] = 999; printf("OnPlayerDeath(%d, %d, %d)", playerid, killerid, reason); return 1;}public OnVehicleSpawn(vehicleid){ printf("OnVehicleSpawn(%d)", vehicleid); return 1;}public OnVehicleDeath(vehicleid, killerid){ printf("OnVehicleDeath(%d, %d)", vehicleid, killerid); return 1;}public OnPlayerText(playerid){ printf("OnPlayerText(%d)", playerid); return 1;}public OnPlayerCommandText(playerid, cmdtext[]){ if (strcmp(cmdtext, "/race-help", true)==0) { SendClientMessage(playerid,0x00FF00FF,"type /winner to see who's winning"); SendClientMessage(playerid,0x00FF00FF,"admin command /resetrace for emergency race reset"); return 1; } if (strcmp(cmdtext, "/joinrace", true)==0) { jointorace[playerid] = 1; SendClientMessage(playerid, COLOR_GREEN, "You have joined to race!"); } return 0;}public OnPlayerInfoChange(playerid){ printf("OnPlayerInfoChange(%d)"); return 1;}public OnPlayerEnterVehicle(playerid, vehicleid, ispassenger){ printf("OnPlayerEnterVehicle(%d, %d, %d)", playerid, vehicleid, ispassenger); return 1;}public OnPlayerExitVehicle(playerid, vehicleid){ printf("OnPlayerExitVehicle(%d, %d)", playerid, vehicleid); return 1;}public OnPlayerStateChange(playerid, newstate, oldstate){ if (newstate == PLAYER_STATE_DRIVER) { playerdriving[playerid] = 1; } if (newstate == PLAYER_STATE_ONFOOT) { playerdriving[playerid] = 0; DisablePlayerCheckpoint(playerid); if (playerinrace[playerid] == 1) { playerinrace[playerid] = 0; playerposition[playerid] = 999; GameTextForPlayer(playerid,"you are out of the race",3000,3); } } printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate); return 1;}public OnPlayerEnterCheckpoint(playerid){ if (raceneumber == 0){ playercheck[playerid] = playercheck[playerid] + 1; if (playercheck[playerid] >= 1 && playercheck[playerid] <=MAXCP-2) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid,checkpoints[playercheck[playerid]][0],checkpoints[playercheck[playerid]][1],checkpoints[playercheck[playerid]][2],7.0); PlayerPlaySound(playerid,1053,checkpoints[playercheck[playerid]][0],checkpoints[playercheck[playerid]][1],checkpoints[playercheck[playerid]][2]); format(msg,sizeof(msg),"cp %d of %d",playercheck[playerid],MAXCP-1); GameTextForPlayer(playerid,msg,2000,6); if (playercp[playercheck[playerid]] == 999) { playercp[playercheck[playerid]] = playerid; } } if (playercheck[playerid] == MAXCP-1) { DisablePlayerCheckpoint(playerid); timeend[playerid] = tickcount(); timetotal[playerid] = timeend[playerid] - timestart[playerid]; timeconvert(playerid); PlayerPlaySound(playerid,1132,checkpoints[playercheck[playerid]][0],checkpoints[playercheck[playerid]][1],checkpoints[playercheck[playerid]][2]); finished = finished + 1; playerposition[playerid] = finished; new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, MAX_PLAYER_NAME); new pos[] = "th"; if (playerposition[playerid] == 1 || playerposition[playerid] == 21 || playerposition[playerid] == 31 || playerposition[playerid] == 41 || playerposition[playerid] == 51 || playerposition[playerid] == 61 || playerposition[playerid] == 71 || playerposition[playerid] == 81 || playerposition[playerid] == 91) { pos = "st"; } if (playerposition[playerid] == 2 || playerposition[playerid] == 22 || playerposition[playerid] == 32 || playerposition[playerid] == 42 || playerposition[playerid] == 52 || playerposition[playerid] == 62 || playerposition[playerid] == 72 || playerposition[playerid] == 82 || playerposition[playerid] == 92) { pos = "nd"; } if (playerposition[playerid] == 3 || playerposition[playerid] == 23 || playerposition[playerid] == 33 || playerposition[playerid] == 43 || playerposition[playerid] == 53 || playerposition[playerid] == 63 || playerposition[playerid] == 73 || playerposition[playerid] == 83 || playerposition[playerid] == 93) { pos = "rd"; } format(msg,sizeof(msg),"you finished %d%s in %dmin %d.%dsec",playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]); GameTextForPlayer(playerid,msg,3000,3); format(msg,sizeof(msg),"%s finished %d%s in %dmin %d.%dsec",pname,playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]); SendClientMessageToAll(0x00FF00FF,msg); playerinrace[playerid] = 0; if (trigg == 0) { trigg = 1; SetTimer("WaitBeforeRaceEnd",2000,0); } }}if (raceneumber == 1){playercheck[playerid] = playercheck[playerid] + 1; if (playercheck[playerid] >= 1 && playercheck[playerid] <=MAXCP2-2) { DisablePlayerCheckpoint(playerid); SetPlayerCheckpoint(playerid,checkpointsRACE2[playercheck[playerid]][0],checkpointsRACE2[playercheck[playerid]][1],checkpointsRACE2[playercheck[playerid]][2],7.0); PlayerPlaySound(playerid,1053,checkpointsRACE2[playercheck[playerid]][0],checkpointsRACE2[playercheck[playerid]][1],checkpointsRACE2[playercheck[playerid]][2]); format(msg,sizeof(msg),"cp %d of %d",playercheck[playerid],MAXCP2-1); GameTextForPlayer(playerid,msg,2000,6); if (playercp[playercheck[playerid]] == 999) { playercp[playercheck[playerid]] = playerid; } } if (playercheck[playerid] == MAXCP2-1) { DisablePlayerCheckpoint(playerid); timeend[playerid] = tickcount(); timetotal[playerid] = timeend[playerid] - timestart[playerid]; timeconvert(playerid); PlayerPlaySound(playerid,1132,checkpointsRACE2[playercheck[playerid]][0],checkpointsRACE2[playercheck[playerid]][1],checkpointsRACE2[playercheck[playerid]][2]); finished = finished + 1; playerposition[playerid] = finished; new pname[MAX_PLAYER_NAME]; GetPlayerName(playerid, pname, MAX_PLAYER_NAME); new pos[] = "th"; if (playerposition[playerid] == 1 || playerposition[playerid] == 21 || playerposition[playerid] == 31 || playerposition[playerid] == 41 || playerposition[playerid] == 51 || playerposition[playerid] == 61 || playerposition[playerid] == 71 || playerposition[playerid] == 81 || playerposition[playerid] == 91) { pos = "st"; } if (playerposition[playerid] == 2 || playerposition[playerid] == 22 || playerposition[playerid] == 32 || playerposition[playerid] == 42 || playerposition[playerid] == 52 || playerposition[playerid] == 62 || playerposition[playerid] == 72 || playerposition[playerid] == 82 || playerposition[playerid] == 92) { pos = "nd"; } if (playerposition[playerid] == 3 || playerposition[playerid] == 23 || playerposition[playerid] == 33 || playerposition[playerid] == 43 || playerposition[playerid] == 53 || playerposition[playerid] == 63 || playerposition[playerid] == 73 || playerposition[playerid] == 83 || playerposition[playerid] == 93) { pos = "rd"; } format(msg,sizeof(msg),"you finished %d%s in %dmin %d.%dsec",playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]); GameTextForPlayer(playerid,msg,3000,3); format(msg,sizeof(msg),"%s finished %d%s in %dmin %d.%dsec",pname,playerposition[playerid],pos,minutes[playerid],seconds[playerid],mseconds[playerid]); SendClientMessageToAll(0x00FF00FF,msg); playerinrace[playerid] = 0; if (trigg == 0) { trigg = 1; SetTimer("WaitBeforeRaceEnd",2000,0); } }} printf("OnPlayerEnterCheckpoint(%d)", playerid); return 1;}public OnPlayerLeaveCheckpoint(playerid){ printf("OnPlayerLeaveCheckpoint(%d)", playerid); return 1;}public RaceAllert(){new ad;for(ad=0;ad<MAX_PLAYERS;ad++){SetTimer("RaceOn", MINUTE-20000,0);SendClientMessage(ad, COLOR_GREEN, "Race will start in 1 minute press /joinrace to join to it");}}public WaitBeforeRace(){ready = 1;SetTimer("BeginRace",500,0);return 1;}public WaitBeforeRaceEnd(){raceon = 0;rcount = 0;return 1;}public BeginRace(){ if (ready == 1) { for (new i=0; i<100; i++) { if (playerinrace[i] == 1 && rcount == 0) { GameTextForPlayer(i,"race will begin in",1000,3); } if (playerinrace[i] == 1 && rcount == 1) { GameTextForPlayer(i,"~r~3",1000,6); } if (playerinrace[i] == 1 && rcount == 2) { GameTextForPlayer(i,"~y~2",1000,6); } if (playerinrace[i] == 1 && rcount == 3) { GameTextForPlayer(i,"~b~1",1000,6); } if (playerinrace[i] == 1 && rcount == 4) { GameTextForAll("The race has started",1000,3); TogglePlayerControllable(i,1); timestart[i] = tickcount(); if (raceneumber == 0) { SetPlayerCheckpoint(i,checkpoints[0][0],checkpoints[0][1],checkpoints[0][2],7.0); for (new r=0; r<MAXCP; r++) { playercp[r] = 999; } } if (raceneumber == 1) { SetPlayerCheckpoint(i,checkpointsRACE2[0][0],checkpointsRACE2[0][1],checkpointsRACE2[0][2],7.0); raceneumber = 0; for (new lp=0; lp<MAXCP2; lp++) { playercp[lp] = 999; } } ready = 0; trig = 0; trigg = 0; triggg = 0; raceon = 1; racers = 0; finished = 0; playercheck[i] = 0; } } rcount = rcount + 1; } return 1;}public IsRaceEmpty(){ new test = 0; for (new i=0; i<100; i++) { if (playerinrace[i] == 1) { test = 1; } } if (test == 0 && triggg == 0) { triggg = 1; raceon = 0; rcount = 0; SendClientMessageToAll(0x00FF00FF,"you may now start a new race"); SendClientMessageToAll(0x00FF00FF,"by typing /joinrace"); }return 1;}public RaceOn(playerid){new s;for(s=0;s<MAX_PLAYERS;s++) { if (jointorace[s] == 1) {if (playerdriving[s] == 1 && playerinrace[s] == 0) { new vidd = GetPlayerVehicleID(s); SetPlayerInterior(s,0); SetVehiclePos(vidd,racestart[racers][0],racestart[racers][1],racestart[racers][2]); SetVehicleZAngle(vidd,racestart[racers][3]); racers = racers + 1; SetCameraBehindPlayer(s); TogglePlayerControllable(s,0); SendClientMessage(s,0x00FF00FF,"You are in the starting grid"); playerinrace[s] = 1; playerposition[s] = 999; if (trig == 0) { trig = 1; SetTimer("WaitBeforeRace",20000,0); } } if (raceon == 1) { GameTextForPlayer(playerid,"Race is in progress, please wait",3000,3); } raceneumber = raceneumber + 1; }}}timeconvert(playerid){ timetotal[playerid] = floatdiv(timetotal[playerid], 60000); minutes[playerid] = floatround(timetotal[playerid], floatround_tozero); seconds[playerid] = floatround(floatmul(timetotal[playerid] - minutes[playerid], 60), floatround_tozero); mseconds[playerid] = floatround(floatmul(floatmul(timetotal[playerid] - minutes[playerid], 60) - seconds[playerid], 1000), floatround_tozero);}