#include #include //Global stuff and defines for our gamemode new gPlayerCheckpointStatus[MAX_PLAYERS]; //Checks for the Checkpoints new InCheckpoint_RACEA_START[MAX_PLAYERS]; //Color Defines #define COLOR_GOLD 0xFFD700AA //Checkpoints enum { CHECKPOINT_NONE, CHECKPOINT_RACEA_START, CHECKPOINT_RACEA_1, CHECKPOINT_RACEA_2, CHECKPOINT_RACEA_3, CHECKPOINT_RACEA_4, CHECKPOINT_RACEA_5, CHECKPOINT_RACEA_6, CHECKPOINT_RACEA_7, CHECKPOINT_RACEA_8, CHECKPOINT_RACEA_9, CHECKPOINT_RACEA_10, CHECKPOINT_RACEA_11, CHECKPOINT_RACEA_12, CHECKPOINT_RACEA_13, CHECKPOINT_RACEA_14, CHECKPOINT_RACEA_15, CHECKPOINT_RACEA_16, CHECKPOINT_RACEA_17, CHECKPOINT_RACEA_18, CHECKPOINT_RACEA_19, CHECKPOINT_RACEA_20, CHECKPOINT_RACEA_21, CHECKPOINT_RACEA_22, CHECKPOINT_RACEA_23, CHECKPOINT_RACEA_24, CHECKPOINT_RACEA_25, CHECKPOINT_RACEA_FINISH } new Count = 5; new CountText[5][255] ={ "~y~1", "~y~2", "~r~3", "~r~4", "~r~5" }; //Areas new AREA_raceastart; main() { print("\n------------------------------------"); print(" SA Grand Prix Racing by [NR]Luke "); print("------------------------------------\n"); } //------------------------------------------------------------------------------ public OnGameModeInit() { print("GameModeInit()"); SetGameModeText("SA Grand Prix Racing"); SetTimer("TIMER_DCallbacks",1000,1); AREA_raceastart=AddAreaCheck(2040.0876,2232.7356,2103.2317,2373.8008,10.0000,12.0000); SetWorldTime(15); AddPlayerClass(0, 1958.3783, 1343.1572, 15.3746, 269.1425, 0, 0, 0, 0, 0, 0); AddStaticVehicle(415,2110.1711,2206.3525,10.5921,359.8132,92,1); // Test Car return 1; } //------------------------------------------------------------------------------ public OnPlayerRequestClass(playerid, classid) { SetupPlayerForClassSelection(playerid); return 1; } //------------------------------------------------------------------------------ public SetupPlayerForClassSelection(playerid) { SetPlayerInterior(playerid,0); SetPlayerPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerFacingAngle(playerid, 180.0); SetPlayerCameraPos(playerid, 1958.3783, 1343.1572, 15.3746); SetPlayerCameraLookAt(playerid, 1958.3783, 1343.1572, 15.3746); } //------------------------------------------------------------------------------ public OnGameModeExit() { print("GameModeExit()"); return 1; } //------------------------------------------------------------------------------ public OnPlayerConnect(playerid) { printf("OnPlayerConnect(%d)", playerid); return 1; } //------------------------------------------------------------------------------ public OnPlayerDisconnect(playerid) { printf("OnPlayerDisconnect(%d)", playerid); return 1; } //------------------------------------------------------------------------------ public OnPlayerSpawn(playerid) { printf("OnPlayerSpawn(%d)", playerid); return 1; } //------------------------------------------------------------------------------ public OnPlayerDeath(playerid, killerid, reason) { 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, "/mycommand", true)==0) { /* Do something here */ return 1; } 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) { printf("OnPlayerStateChange(%d, %d, %d)", playerid, newstate, oldstate); return 1; } //------------------------------------------------------------------------------ public CountDown() { for (new i = 0; i < MAX_PLAYERS; i++) // i = playerid { if (Count > 0) { TogglePlayerControllable(i, 0); GameTextForPlayer(i, CountText[Count-1], 999, 5); Count--; SetTimer("CountDown", 1000, 0); } else { TogglePlayerControllable(i, 1); GameTextForPlayer(i, "~g~Go!", 999, 5); Count = 5; } } } //------------------------------------------------------------------------------ public MinuteCount() { for (new i = 0; i < MAX_PLAYERS; i++) // i = playerid { if (IsPlayerConnected(i) && InCheckpoint_RACEA_START[i]) { DisablePlayerCheckpoint(i); SetPlayerCheckpoint(i,2146.3345,2134.9775,10.3594,10.0); SetTimer("CountDown",1000,0); } } } //------------------------------------------------------------------------------ public OnPlayerEnterCheckpoint(playerid) { switch (gPlayerCheckpointStatus[playerid]) { case CHECKPOINT_RACEA_START: { InCheckpoint_RACEA_START[playerid]=true; SetTimer("MinuteCount",60000,0); SendClientMessage(playerid, COLOR_GOLD, "The countdown will begin in a minute."); } case CHECKPOINT_RACEA_1: { GameTextForPlayer(playerid, "1/26", 3000, 1); SetPlayerCheckpoint(playerid,2146.4832,1968.8866,10.3633,10.0); } case CHECKPOINT_RACEA_2: { GameTextForPlayer(playerid, "2/26", 3000, 1); SetPlayerCheckpoint(playerid,2130.6968,1831.5782,10.3594,10.0); } case CHECKPOINT_RACEA_3: { GameTextForPlayer(playerid, "3/26", 3000, 1); SetPlayerCheckpoint(playerid,2138.8247,1847.8046,10.3633,10.0); } case CHECKPOINT_RACEA_4: { GameTextForPlayer(playerid, "4/26", 3000, 1); SetPlayerCheckpoint(playerid,2066.4575,1680.3347,10.3633,10.0); } case CHECKPOINT_RACEA_5: { GameTextForPlayer(playerid, "5/26", 3000, 1); SetPlayerCheckpoint(playerid,2066.5967,1528.0879,10.3594,10.0); } case CHECKPOINT_RACEA_6: { GameTextForPlayer(playerid, "6/26", 3000, 1); SetPlayerCheckpoint(playerid,2066.4539,1272.6832,10.3593,10.0); } case CHECKPOINT_RACEA_7: { GameTextForPlayer(playerid, "7/26", 3000, 1); SetPlayerCheckpoint(playerid,2066.5166,1055.4886,10.3594,10.0); } case CHECKPOINT_RACEA_8: { GameTextForPlayer(playerid, "8/26", 3000, 1); SetPlayerCheckpoint(playerid,2076.1316,861.3741,6.4206,10.0); } case CHECKPOINT_RACEA_9: { GameTextForPlayer(playerid, "9/26", 3000, 1); SetPlayerCheckpoint(playerid,2323.2930,851.8660,6.4257,10.0); } case CHECKPOINT_RACEA_10: { GameTextForPlayer(playerid, "10/26", 3000, 1); SetPlayerCheckpoint(playerid,2607.3989,912.9923,6.4258,10.0); } case CHECKPOINT_RACEA_11: { GameTextForPlayer(playerid, "11/26", 3000, 1); SetPlayerCheckpoint(playerid,2708.4639,1282.9065,6.4257,10.0); } case CHECKPOINT_RACEA_12: { GameTextForPlayer(playerid, "12/26", 3000, 1); SetPlayerCheckpoint(playerid,2708.7874,1802.9209,6.4219,10.0); } case CHECKPOINT_RACEA_13: { GameTextForPlayer(playerid, "13/26", 3000, 1); SetPlayerCheckpoint(playerid,2671.6326,2436.0344,6.4218,10.0); } case CHECKPOINT_RACEA_14: { GameTextForPlayer(playerid, "14/26", 3000, 1); SetPlayerCheckpoint(playerid,2082.2158,2564.6443,6.4726,10.0); } case CHECKPOINT_RACEA_15: { GameTextForPlayer(playerid, "15/26", 3000, 1); SetPlayerCheckpoint(playerid,1507.9442,2454.0879,6.4218,10.0); } case CHECKPOINT_RACEA_16: { GameTextForPlayer(playerid, "16/26", 3000, 1); SetPlayerCheckpoint(playerid,1239.7996,2332.1526,6.4219,10.0); } case CHECKPOINT_RACEA_17: { GameTextForPlayer(playerid, "17/26", 3000, 1); SetPlayerCheckpoint(playerid,1226.0612,1965.9755,6.4219,10.0); } case CHECKPOINT_RACEA_18: { GameTextForPlayer(playerid, "18/26", 3000, 1); SetPlayerCheckpoint(playerid,1226.6365,1397.1482,6.4257,10.0); } case CHECKPOINT_RACEA_19: { GameTextForPlayer(playerid, "19/26", 3000, 1); SetPlayerCheckpoint(playerid,1332.1415,872.7426,6.5000,10.0); } case CHECKPOINT_RACEA_20: { GameTextForPlayer(playerid, "20/26", 3000, 1); SetPlayerCheckpoint(playerid,1849.9524,852.2249,9.2966,10.0); } case CHECKPOINT_RACEA_21: { GameTextForPlayer(playerid, "21/26", 3000, 1); SetPlayerCheckpoint(playerid,2036.8738,863.6600,6.4407,10.0); } case CHECKPOINT_RACEA_22: { GameTextForPlayer(playerid, "22/26", 3000, 1); SetPlayerCheckpoint(playerid,2048.5559,1193.9558,10.3594,10.0); } case CHECKPOINT_RACEA_23: { GameTextForPlayer(playerid, "23/26", 3000, 1); SetPlayerCheckpoint(playerid,2048.5774,1536.5914,10.3594,10.0); } case CHECKPOINT_RACEA_24: { GameTextForPlayer(playerid, "24/26", 3000, 1); SetPlayerCheckpoint(playerid,2084.4529,1774.8777,10.3594,10.0); } case CHECKPOINT_RACEA_25: { GameTextForPlayer(playerid, "25/26", 3000, 1); SetPlayerCheckpoint(playerid,2128.3105,2225.6035,10.3593,10.0); } case CHECKPOINT_RACEA_FINISH: { GameTextForPlayer(playerid, "26/26", 3000, 1); DisablePlayerCheckpoint(playerid); } } return 1; } //------------------------------------------------------------------------------ public OnPlayerLeaveCheckpoint(playerid) { switch (gPlayerCheckpointStatus[playerid]) { case CHECKPOINT_RACEA_START: { InCheckpoint_RACEA_START[playerid]=false; SendClientMessage(playerid, COLOR_GOLD, "You must stay in the checkpoint to start the race!"); } } return 1; } //------------------------------------------------------------------------------ public OnPlayerEnterArea(playerid, areaid) { printf("OnPlayerEnterArea(%d, %d)", playerid, areaid); if (areaid==AREA_raceastart) gPlayerCheckpointStatus[playerid] = CHECKPOINT_RACEA_START; SendClientMessage(playerid, COLOR_GOLD, "Enter the checkpoint and stay in it to start the race!"); SetPlayerCheckpoint(playerid,2146.5022,2202.1724,10.3593,8.0); } //------------------------------------------------------------------------------ public OnPlayerLeaveArea(playerid, areaid) { printf("OnPlayerLeaveArea(%d, %d)", playerid, areaid); if (areaid==AREA_raceastart) gPlayerCheckpointStatus[playerid] = CHECKPOINT_NONE; SendClientMessage(playerid, COLOR_GOLD, "Hope you find another race."); DisablePlayerCheckpoint(playerid); }