rendered paste body#include <a_samp>#define COLOR_BLUE 0x000ecaAA#define COLOR_GREY 0xAFAFAFAA#define COLOR_YELLOW 0xFFFF00AAnew gProgress1[MAX_PLAYERS];new once[MAX_PLAYERS];new gPosition1;new gCountdowntimer1;new gCountdown1;new gTime1;new gTimer1;new gRaceStillInProgress1;new gCheckTime1;#define MAX_CHECKPOINTS 14new Float:gRaceCheckpoints1[MAX_CHECKPOINTS][4] ={{-2800.2744,-476.5320,6.7535,25.0}, // 1{-2704.7192,-531.5262,11.6127,15.0}, // 2{-2673.6926,-416.8130,31.7350,15.0}, // 3{-2376.2341,-379.4245,76.0757,15.0}, // 4{-2321.7109,-450.2548,79.4628,15.0}, // 5{-2412.8970,-416.6096,84.6654,15.0}, // 6{-2628.7920,-494.4859,69.6950,15.0}, // 7{-2474.5840,-485.6265,100.4489,15.0},// 8{-2376.2234,-647.8525,126.2174,15.0},// 9{-2348.6492,-788.2272,93.7642,15.0}, // 10{-2223.4160,-744.8737,63.8450,15.0}, // 11{-2206.1416,-987.7772,36.7893,15.0}, // 12{-1917.4015,-1365.4313,39.8735,15.0},// 13{-1903.7386,-815.5905,44.5231,30.0} // 14};main(){ print("\n----------------------------------"); print("4wD rally race By small 4"); print("-------------------------------------\n");}public OnGameModeInit(){ print("GameModeInit()"); SetGameModeText("4wD rally"); gTime1 = 0; return 1;}public OnPlayerRequestClass(playerid, classid){ printf("OnPlayerRequestClass(%d, %d)", playerid, classid); SetPlayerInterior(playerid,0); SetPlayerPos(playerid,2682.7673,-1680.1404,9.4193); SetPlayerFacingAngle(playerid, 352.2312); SetPlayerCameraPos(playerid,2683.1050,-1674.7749,9.4287); SetPlayerCameraLookAt(playerid,2682.0964,-1691.6710,9.4207); return 1;}public OnGameModeExit(){ print("GameModeExit()"); return 1;}public OnPlayerConnect(playerid){ GameTextForPlayer(playerid,"4WD rally ~r~by small 4",2500,5); GivePlayerMoney(playerid, 1250); once[playerid] = 0; return 1;}public OnPlayerDisconnect(playerid){ printf("OnPlayerDisconnect(%d)", playerid); return 1;}public OnPlayerEnterCheckpoint(playerid) {DisablePlayerCheckpoint(playerid); if (gProgress1[playerid] == MAX_CHECKPOINTS-1){ gPosition1++; new playername1[MAX_PLAYER_NAME]; new finishmessage1[256]; new finishtime1[256]; new Float:fMinutes1; new Minutes1; new Seconds1; if (gTime1 != 0) { fMinutes1 = gTime1/60; Minutes1 = floatround(fMinutes1, floatround_floor); Seconds1 = gTime1-(Minutes1*60); format(finishtime1, sizeof(finishtime1),"You finished in %d min(s) %d sec(s).", Minutes1, Seconds1); SendClientMessage(playerid, COLOR_GREY, finishtime1); } GetPlayerName(playerid, playername1, MAX_PLAYER_NAME); switch (gPosition1){ case 1: { format(finishmessage1, sizeof(finishmessage1),"%s has won the race!", playername1); GameTextForAll(finishmessage1, 3000, 5); SetPlayerScore(playerid,GetPlayerScore(playerid)+5); } case 2: { format(finishmessage1, sizeof(finishmessage1),"%s finished %d nd", playername1, gPosition1); GameTextForAll(finishmessage1, 3000, 5); SetPlayerScore(playerid,GetPlayerScore(playerid)+4); } case 3: { format(finishmessage1, sizeof(finishmessage1),"%s finished %d rd", playername1, gPosition1); GameTextForAll(finishmessage1, 3000, 5); SetPlayerScore(playerid,GetPlayerScore(playerid)+3); } default: { format(finishmessage1, sizeof(finishmessage1),"%s finished %d th", playername1, gPosition1); GameTextForAll(finishmessage1, 3000, 5); SetPlayerScore(playerid,GetPlayerScore(playerid)+1); } } }if (gProgress1[playerid] == 0){ if (once[playerid] == 0){ SendClientMessage(playerid, COLOR_YELLOW, "This is the starting line. Once all race members are ready type /STARTRACE to start the countdown."); once[playerid] = 1; } gProgress1[playerid]=0;}else{gProgress1[playerid]++;SetPlayerCheckpoint(playerid,gRaceCheckpoints1[gProgress1[playerid]][0],gRaceCheckpoints1[gProgress1[playerid]][1],gRaceCheckpoints1[gProgress1[playerid]][2],gRaceCheckpoints1[gProgress1[playerid]][3]); // ml if (gCheckTime1 > 10 || gCheckTime1 == 0){ KillTimer(gRaceStillInProgress1); gCheckTime1=1; gRaceStillInProgress1=SetTimer("CheckpointTimer", 1000, 1); }}return 1;}public Gettimer() { gCountdown1--; if (gCountdown1 >= 1){ new message1[256]; format(message1, sizeof(message1),"%d", gCountdown1); GameTextForAll(message1, 750, 5); } else { KillTimer(gCountdowntimer1); for (new i = 0; i < MAX_PLAYERS; i++) { TogglePlayerControllable(i, 1); } GameTextForAll("~W~GO", 2000, 5); gTime1=0; KillTimer(gTimer1); gTimer1=SetTimer("RaceTimer", 1000, 1); }return 1; } public RaceTimer1() {gTime1++;}public CheckpointTimer1() {gCheckTime1++;}public EndGame(){GameModeExit();}public OnPlayerCommandText(playerid, cmdtext[]){ if (strcmp(cmdtext, "/startrace1", true)==0) { if (gCheckTime1 > 30 || gCheckTime1 == 0 || IsPlayerAdmin(playerid) == 1) { gCountdown1=6; gPosition1 = 0; gTime1 = 0; SendClientMessageToAll(COLOR_GREY, "The race is starting..."); for (new i = 0; i < MAX_PLAYERS; i++) { gProgress1[i] = 1; SetPlayerCheckpoint(i,gRaceCheckpoints1[1][0],gRaceCheckpoints1[1][1],gRaceCheckpoints1[1][2],gRaceCheckpoints1[1][3]); TogglePlayerControllable(i, 0); } KillTimer(gCountdowntimer1); gCountdowntimer1=SetTimer("Gettimer", 1000, 1); } else { //race in progress msg SendClientMessage(playerid, COLOR_YELLOW, "Sorry but a race is already in progress. Please wait for it to finish."); } return 1; } if (strcmp(cmdtext, "/rescueme1", true)==0) { gProgress1[playerid] = 1; SetPlayerCheckpoint(playerid,gRaceCheckpoints1[1][0],gRaceCheckpoints1[1][1],gRaceCheckpoints1[1][2],gRaceCheckpoints1[1][3]); SetPlayerPos(playerid,gRaceCheckpoints1[0][0],gRaceCheckpoints1[0][1],gRaceCheckpoints1[0][2]); } if (strcmp(cmdtext, "/help1", true)==0) { SendClientMessage(playerid, COLOR_YELLOW, "Type /STARTRACE to start the race. Type /RESCUEME if you become stuck/lost."); SendClientMessage(playerid, COLOR_YELLOW, "Follow the checkpoints on your minimap to finish the race.");}if(strcmp(cmdtext, "/race1", true) == 0) {gProgress1[playerid] = 0;SetPlayerCheckpoint(playerid,gRaceCheckpoints1[0][0],gRaceCheckpoints1[0][1],gRaceCheckpoints1[0][2],gRaceCheckpoints1[0][3]);return 1;}return 0;}