rendered paste body#include <a_samp>
#include <dcallbacks>
//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);
}