Hallo,
Ich habe das Problem das sich die Race Checkpoint nicht auflösen wenn man durch fährt, wie mache ich es das der Checkpoint durch den man fährt aufgelöst wird und der nächste erstellt wird ?
//Race checkpoints
new MachtArbeit[MAX_PLAYERS];
new CheckpointStatus[MAX_PLAYERS];
#define MAX_RACE_POINTS 17
new Float:racecheckpoints[MAX_RACE_POINTS][3] = {
{1656.829956, -1166.398437, 23.617559}, // 1
{1707.867675, -1206.746826, 20.976793}, // 2
{1783.874511, -1286.020629, 13.275278}, // 3
{1859.596069, -1219.198364, 18.736469}, //
{1892.303710, -1127.870849, 24.013429}, // 5
{1907.985717, -1127.944580, 24.407924},
{1921.429077, -1127.915771, 24.743091},
{1957.571533, -1128.151611, 25.638833},
{1997.838745, -1128.968505, 25.293878},
{2029.990234, -1128.175903, 24.385658},
{2077.569824, -1122.709838, 23.775880},
{2079.989990, -1148.917846, 23.618659},
{2077.754882, -1167.527221, 23.524724},
{2077.924560, -1184.147338, 23.527599},
{2078.348388, -1203.702514, 23.650722},
{2089.319580, -1228.770019, 23.709350},
{1728.458129, -1055.661743, 23.505249}
};
Befehl:
if(strcmp(cmdtext,"/mission", true) == 0)
{
if(IsPlayerInAnyVehicle(playerid))
{ // Der CMD funkt nur dann, wenn man in einem Fahrzeug drinne sitzt.
if(GetVehicleModel(GetPlayerVehicleID(playerid)) == 411) // Der CMD funkt. nur dann, wenn man in einem Fahrzug drinne sitzt und es ein bestimmes Model ist.
{
MachtArbeit[playerid] = 1; // Bedeutet, dass die Arbeit ab jetzt los geht. 1 = Arbeit geht Los.
SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[0][0],racecheckpoints[0][1],racecheckpoints[0][2],racecheckpoints[1][0],racecheckpoints[1][1],racecheckpoints[1][2],3.0);
}
}
return 1;
}
Und der Public:
public OnPlayerEnterRaceCheckpoint(playerid)
{
if (IsPlayerInAnyVehicle(playerid)) // Bedeutet, dass die Fukntion nur dann funk. ,wennn man in einem fahrzeug sitzt.
{
if (GetVehicleModel(GetPlayerVehicleID(playerid)) == 408)
{
if(MachtArbeit[playerid] == 1)
{
CheckpointStatus[playerid]++; // Hier werden die Checkpoints aufgezählt.
new letzerpunkt = MAX_RACE_POINTS; // Wichtig. Hier wird der letze Checkpoint definiert.
if(CheckpointStatus[playerid] < letzerpunkt)
{
DisablePlayerRaceCheckpoint(playerid); // Beendet den Checkpoint
SetPlayerRaceCheckpoint(playerid,0,racecheckpoints[CheckpointStatus[playerid]][0],racecheckpoints[CheckpointStatus[playerid]][1],racecheckpoints[CheckpointStatus[playerid]][2],racecheckpoints[CheckpointStatus[playerid]+1][0],racecheckpoints[CheckpointStatus[playerid]+1][1],racecheckpoints[CheckpointStatus[playerid]+1][2],3.0);
}
// Bedeutung: SetPlayerRaceCheckpoint(playerid, Checkpointtype, X[CheckpointSTatus], Y[CheckpointStatus], Z[CheckpointStatus], NächsterX[Nächster CheckpointSTatus],NächsterY[Nächster CheckpointSTatus],NächsterZ[Nächster CheckpointSTatus], size);
if(CheckpointStatus[playerid] == letzerpunkt){ // Wenn der Checkpoint STatus die maximale Anzahl erreich hat. Passiert folgendes:
MachtArbeit[playerid]= 0; // Hier wird die Mission beendet.
CheckpointStatus[playerid] = 0; // Hier wird definiert, dass, der Checkpoint Status bei Null liegt.
DisablePlayerRaceCheckpoint(playerid); // Damit wird der Race Checkpoint beendet.
}
}
}
}
return 1;
}