rendered paste body//Race
new race[MAX_PLAYERS];
new racecheck[MAX_PLAYERS][2];
new racewinners[2][10];
new StopRaceOne;
new raceOne[4];
public StopRace1(playerid)
{
race[playerid] = 0;
racecheck[playerid][1] = 0;
racewinners[1][1] = 0;
racewinners[1][2] = 0;
racewinners[1][3] = 0;
raceOne[0] = 0;
raceOne[1] = 0;
raceOne[2] = 0;
GameTextForAll("Race Ended", 5000, 3);
}
if (strcmp(cmd, "/race", true)==0)
{
if(race[playerid] != 0)
{
SendClientMessage(playerid, 0xC0C0C0FF, "You already play in a race!");
return 1;
}
if(minigame[playerid] != 0)
{
SendClientMessage(playerid, 0xC0C0C0FF, "You already play a minigame.");
return 1;
}
new tmp[256];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp))
{
SendClientMessage(playerid, 0xC0C0C0FF, "You have to enter a race ID!");
return 1;
}
new raceid = strval(tmp);
if(raceid == 1)
{
SetPlayerInterior(playerid, 0);
if(raceOne[0] == 0){ SetPlayerPos(playerid, 2275.9668, -2064.6965, 13.5469);}
else if(raceOne[1] == 0){ SetPlayerPos(playerid, 2271.6111, -2067.5737, 13.3828);}
else if(raceOne[2] == 0){ SetPlayerPos(playerid, 2267.6321, -2072.7046, 13.5469);}
else
{
SendClientMessage(playerid, 0xC0C0C0FF, "Sorry, race is already full. Please wait until it finished.");
}
DisablePlayerCheckpoint(playerid);
SetPlayerCheckpoint(playerid, race1[0][0], race1[0][1], race1[0][2], 15.0);
race[playerid] = 1;
racecheck[playerid][1] = 0;
return 1;
}
else
{
SendClientMessage(playerid, 0xFFFF00FF, "/race 1 - Motor race in LS Military Base. 3 Motors");
return 1;
}
}
OnPlaterChangeState or something:
if(race[playerid] == 1)
{
if(newstate == PLAYER_STATE_DRIVER)
{
TogglePlayerControllable(playerid, 0);
if(raceOne[0] == 0){ raceOne[0] = (playerid + 1); }
else if(raceOne[1] == 0){ raceOne[1] = (playerid + 1); }
else
{
TogglePlayerControllable((raceOne[0] - 1), 1);
TogglePlayerControllable((raceOne[1] - 1), 1);
TogglePlayerControllable((raceOne[2] - 1), 1);
}
}
}
public OnPlayerEnterCheckpoint(playerid)
{
if(race[playerid] == 1)
{
if(racecheck[playerid][1] == 9)
{
if(racewinners[1][1] == 0)
{
new username[256];
new string[256];
GetPlayerName(playerid, username, 256);
racewinners[1][1] = 1;
format(string, sizeof(string), "%s has won the race! Race will end in 30 seconds.", username);
GameTextForAll(string, 5000, 3);
race[playerid] = 0;
racecheck[playerid][1] = 0;
DisablePlayerCheckpoint(playerid);
StopRaceOne = SetTimer("StopRace1", 30000, 0);
return 1;
}
else if(racewinners[1][2] == 0)
{
new username[256];
new string[256];
GetPlayerName(playerid, username, 256);
racewinners[1][2] = 1;
format(string, sizeof(string), "%s finished 2nd!", username);
GameTextForAll(string, 5000, 3);
race[playerid] = 0;
racecheck[playerid][1] = 0;
DisablePlayerCheckpoint(playerid);
return 1;
}
else if(racewinners[1][3] == 0)
{
new username[256];
new string[256];
GetPlayerName(playerid, username, 256);
racewinners[1][1] = 0;
racewinners[1][2] = 0;
racewinners[1][3] = 0;
raceOne[0] = 0;
raceOne[1] = 0;
raceOne[2] = 0;
format(string, sizeof(string), "%s finished 3th, and last!", username);
GameTextForAll(string, 5000, 3);
DisablePlayerCheckpoint(playerid);
KillTimer(StopRaceOne);
return 1;
}
}
DisablePlayerCheckpoint(playerid);
racecheck[playerid][1]++;
SetPlayerCheckpoint(playerid, race1[racecheck[playerid][1]][0], race1[racecheck[playerid][1]][1], race1[racecheck[playerid][1]][2], 15);
new Float:x;
new Float:y;
new Float:z;
GetPlayerPos(playerid, x, y, z);
PlayerPlaySound(playerid, 1095, x, y, z);
}
return 1;
}