#include #include //Global stuff and defines for our gamemode new gPlayerCheckpointStatus[MAX_PLAYERS]; //Color Defines #define COLOR_GOLD 0xFFD700AA //Checkpoints #define CHECKPOINT_NONE 0 #define CHECKPOINT_RACEA_START 1 #define CHECKPOINT_RACEA_1 2 #define CHECKPOINT_RACEA_2 3 #define CHECKPOINT_RACEA_3 4 #define CHECKPOINT_RACEA_4 5 #define CHECKPOINT_RACEA_5 6 #define CHECKPOINT_RACEA_6 7 #define CHECKPOINT_RACEA_7 8 #define CHECKPOINT_RACEA_8 9 #define CHECKPOINT_RACEA_9 10 #define CHECKPOINT_RACEA_10 11 #define CHECKPOINT_RACEA_11 12 #define CHECKPOINT_RACEA_12 13 #define CHECKPOINT_RACEA_13 14 #define CHECKPOINT_RACEA_14 15 #define CHECKPOINT_RACEA_15 16 #define CHECKPOINT_RACEA_16 17 #define CHECKPOINT_RACEA_17 18 #define CHECKPOINT_RACEA_18 19 #define CHECKPOINT_RACEA_19 20 #define CHECKPOINT_RACEA_20 21 #define CHECKPOINT_RACEA_21 22 #define CHECKPOINT_RACEA_22 23 #define CHECKPOINT_RACEA_23 24 #define CHECKPOINT_RACEA_24 25 #define CHECKPOINT_RACEA_25 26 #define CHECKPOINT_RACEA_FINISH 27 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) && IsPlayerInAnyVehicle(i)) { SetPlayerCheckpoint(i,2146.3345,2134.9775,10.3594,10.0); CountDown(); } } } //------------------------------------------------------------------------------ public OnPlayerEnterCheckpoint(playerid) { switch (gPlayerCheckpointStatus[playerid]) { case CHECKPOINT_RACEA_START: { SetTimer("MinuteCount",10000,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); } default: { DisablePlayerCheckpoint(playerid); } } return 1; } //------------------------------------------------------------------------------ public OnPlayerLeaveCheckpoint(playerid) { switch (gPlayerCheckpointStatus[playerid]) { case CHECKPOINT_RACEA_START: { 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) SendClientMessage(playerid, COLOR_GOLD, "Enter the checkpoint and stay in it to start the race!"); SetPlayerCheckpoint(playerid,2146.5022,2202.1724,10.3593,10.0); } //------------------------------------------------------------------------------ public OnPlayerLeaveArea(playerid, areaid) { printf("OnPlayerLeaveArea(%d, %d)", playerid, areaid); if (areaid==AREA_raceastart) SendClientMessage(playerid, COLOR_GOLD, "Hope you find another race."); DisablePlayerCheckpoint(playerid); }